2012-02-03 10 views
1

私は、次のコードを持っている:私はそれだけで悪い形だから@$foo->bar構文から離れて滞在したいプロパティが存在するかどうかをチェックして値をチェックする、より簡潔な方法がありますか?

property_exists($foo,'bar') && 'x' === $foo->bar) 

を。

しかし、私は$foobarを2回続けて持っていなくてもいいと思われます。あなたはそれを行うための機能を書くことができ

+0

アイデアまたはこの目的は良いですが、避けることができる方法はありますか?私はそれをもっと簡潔な言語レベルのサポートが望んでいたことを望むのはとても簡単なことです。 – Matthew

+0

すべてのプロパティを初期化することで、問題を回避できます。 – Aerik

+0

私は本当にここでそれをすることはできません、それらのいくつかは動的に作成され、私はそれらが必要ない場合、私のオブジェクトを乱雑にしたくない。私はそれがトレードオフだと思う。 – Matthew

答えて

1

class Foo { 
    public $bar; 
    function isset_and_equals($name, $value) { 
     return property_exists($this, $name) && $this->$name === $value; 
    } 
} 

$foo = new Foo; 
var_dump($foo->isset_and_equals('bar', 'x')); // false 

$foo->bar = 'x'; 
var_dump($foo->isset_and_equals('bar', 'x')); // true 
0

あなたが関数を書くことができ - 多分、各プロパティのいずれかが必要、または多分あなたは財産を渡したときにエラーを抑制しなければならない(それができない場合がありますので存在) - 私はそれをこのように(未テスト)を行うだろう:

function checkBar($object, $xValue){ 
    if(isset($object->bar) && $object->bar === $xValue) return true; 
    return false; 
} 

使用方法:関数fを書くの

if(checkBar($foo)) dostuff(); 
関連する問題