是否有更简洁的方法来检查属性是否存在然后检查它的值?

时间:2012-02-03 23:57:46

标签: php null

我有以下代码:

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

我希望远离@$foo->bar语法,因为它只是形式不好。

但我不希望两次有$foobar,这似乎是不必要的。

2 个答案:

答案 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();