我有以下代码:
property_exists($foo,'bar') && 'x' === $foo->bar)
我希望远离@$foo->bar
语法,因为它只是形式不好。
但我不希望两次有$foo
和bar
,这似乎是不必要的。
答案 0 :(得分: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
答案 1 :(得分:0)
你可以编写一个函数 - 也许每个属性需要一个函数,或者在传入属性时可能需要抑制错误(因为它可能不存在) - 我会这样做(未经测试):
function checkBar($object, $xValue){
if(isset($object->bar) && $object->bar === $xValue) return true;
return false;
}
用法:
if(checkBar($foo)) dostuff();