私は、次のコードを持っている:私はそれだけで悪い形だから@$foo->bar
構文から離れて滞在したいプロパティが存在するかどうかをチェックして値をチェックする、より簡潔な方法がありますか?
property_exists($foo,'bar') && 'x' === $foo->bar)
を。
しかし、私は$foo
とbar
を2回続けて持っていなくてもいいと思われます。あなたはそれを行うための機能を書くことができ
私は、次のコードを持っている:私はそれだけで悪い形だから@$foo->bar
構文から離れて滞在したいプロパティが存在するかどうかをチェックして値をチェックする、より簡潔な方法がありますか?
property_exists($foo,'bar') && 'x' === $foo->bar)
を。
しかし、私は$foo
とbar
を2回続けて持っていなくてもいいと思われます。あなたはそれを行うための機能を書くことができ
:
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
あなたが関数を書くことができ - 多分、各プロパティのいずれかが必要、または多分あなたは財産を渡したときにエラーを抑制しなければならない(それができない場合がありますので存在) - 私はそれをこのように(未テスト)を行うだろう:
function checkBar($object, $xValue){
if(isset($object->bar) && $object->bar === $xValue) return true;
return false;
}
使用方法:関数fを書くの
if(checkBar($foo)) dostuff();
アイデアまたはこの目的は良いですが、避けることができる方法はありますか?私はそれをもっと簡潔な言語レベルのサポートが望んでいたことを望むのはとても簡単なことです。 – Matthew
すべてのプロパティを初期化することで、問題を回避できます。 – Aerik
私は本当にここでそれをすることはできません、それらのいくつかは動的に作成され、私はそれらが必要ない場合、私のオブジェクトを乱雑にしたくない。私はそれがトレードオフだと思う。 – Matthew