2011-12-19 14 views
0

基本的にはクラスの変数にアクセスしたいが、必要な変数の名前を動的に変更する。私は多分それがより明確になり、正確に説明するために、ビット問題を抱えて、私のコードを見ている:varを使用してクラスのvarを記述する

$requirement = array('req1','req2'); 
foreach($requirements as $requirement) 
     { 
      // CHECK FOR REQUIRED PARAMETERS 
      if(!isset($this->$requirement)) { echo 'foo'; } 
     } 

は、だから私は、実際にはそうで$this->req1にアクセスしたいが、どのように私は私のiterator-でそれにアクセスします変数?私はこれがすでに正しいかどうか、見つけにくいかどうかはわかりません。

また、同じ状況で両親の変数にアクセスするにはどうすればよいですか?

+1

'$ this - > {$ requirement}'を試してください。あなたの場合、親は何ですか? – hakre

+0

私は拡張された親クラスを意味します。 'parent :: $ variable'でアクセスするもの – Anonymous

+2

の親プロパティは、子オブジェクトで利用できます(親ではprivateと定義されている場合を除き、その場合は子からアクセスしないでください) –

答えて

4

$$(または魔法ゲッター/セッターを使用)

if(!isset($this->$$requirement)) { echo 'foo'; } 

または

if(!isset($this->{$requirement})) { echo 'foo'; } 
+0

そうすべきです!親に対しては 'parent :: $ {$ requirement}'ですか? – Anonymous

+3

親クラスを拡張している場合は、すべての非プライベートプロパティを子クラスのインスタンスで使用できるようにする必要があります。したがって、別の方法でtemにアクセスする必要はありません –

1

マークが言ったように私は、魔法のゲッターとセッターを使用します。このように:

<?php 

class MyClass 
{ 
    protected $data; 

    public function __get($key) 
    { 
     return $this->data[$key] 
    } 

    public function __set($key, $value) 
    { 
     $this->data[$key] = $value; 
    } 
} 

$var = 'adsdas'; 
$var2 = 'sadkajds'; 

$obj = new MyClass; 
$obj->$var = 1; 
$obj->$var2 = 1; 
+1

これは通常の方法ですが私の場合は使用するのが少し複雑ですので、大括弧で記入してください、どうもありがとうございます! – Anonymous

関連する問題