2017-08-01 7 views
0

私はおそらく構文が原因でエラーが発生しており、正しく実行する方法がわかりません。OOP PHP。構文未定義のプロパティ

は、これは私が次のエラーを持っている私のコード

function myFunction($id = 'ID') 
{ 
    if (!$this->$id) { 
     // TO DO SOMETHING 
    } 
} 

ある

お知らせ:未定義のプロパティ:ベース:: $のID .....ライン上の278

私は試しました

if (!$this->{$id}) { 

しかし何もなし

誰でも正しい構文がわかります。私はGoogleでそれを見つけることはできません。あなたのクラスのプロパティを定義する場合

+2

はかなり確信してあなただけの 'の場合(!$番号)を意味する' ... –

+1

@NiettheDarkAbsolいいえ、私は、彼/彼女がプロパティが存在しないかどうかを確認したいと思います。プロパティが存在するかどうかをチェックしたい場合はアクセスしないでください。存在するかどうか疑わしいプロパティに直接アクセスするのではなく、 'isset'を使うか、' property_exists'を使うのが良いでしょう。プロパティが存在しない場合、スクリプトはエラーをスローします。下の私の答えをチェックしてください。 – Alfa

答えて

0

、あなたは、このようなようにアクセスする必要があります

$this->id 

ない

$this->$id 
0

単に

if(!$this->id) { 

または

if(!$id) { 
使用します
2

あなたは代わりに直接アクセスif(!$this->$id)を使用してのproperty_existsを使用することがあります。

function myFunction($id = 'ID') 
{ 
    if (!property_exists($this, $id)) { 
     // TO DO SOMETHING 
    } 
} 
+0

はい。関数property_exists()がソリューションです。それは私の方法を使用してそれを行うことはできませんが残念です。 ありがとうAlfa – Zenit

-1

出力を取得するには、この方法を試してみてください。

$this->id 

または

$id 
0

私はあなたのコードが動作するかもしれない方法の例を作成し、私は文字列でプロパティにアクセスするというアイデアを保ちました。最初のステップは、クラスに実際に "ID"という名前のフィールドを持たせることです。私はコンストラクタでこのフィールド値を設定します。

class My { 
    private $ID; 

    public function __construct($id) { 
     $this->ID = $id; 
    } 

    public function myFunction($id='ID'){ 

     if(!property_exists($this, $id)){ 
     echo "$id not found"; 
     } else { 
     echo $this->$id; 
     } 

    } 
} 

$my = new My(4); 
$my->myFunction();