2012-01-06 5 views
3

マジックセッターを使用して設定されたプロパティが存在するかどうかを確認することはできますか?プロパティが存在するか確認する

class Test 
{ 
    private $vars; 

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

    public function &__get($key) 
    { 
     return $this->vars[$key]; 
    } 
} 

$test = new Test; 

$test->myvar = 'yay!'; 

if (magic_isset($test->myvar)) { 
} 

私のクラスでは別の機能を設定する必要はありませんか?

+3

は__isset http://php.net/manual/en/language.oop5.overloading.php – Damp

+0

@Damp Eeeckを見てみてください。 ofc。 :P \ – PeeHaa

+1

@danjordanが言うように、実際にはphp5 +でのproperty_existsを試してみるよhttp://php.net/manual/en/function.property-exists.php –

答えて

7

使用__isset()isset()

public function __isset($key) 
{ 
    return isset($this->vars[$key]); 
} 
$test = new Test; 

$test->myvar = 'yay!'; 

if (isset($test->myvar)) { 

} 
+5

' isset'の動作は 'property_exist'関数と同じではありません(つまり、プロパティは存在しますが 'null'または' false'と等しく、 'isset'は通常' false'を返します)。この解決策(質問も)はあいまいです。 –

関連する問題