我在php docs上看到isset()
比property_exists()
快,我们应该使用两者的组合
if (isset($this->fld) || property_exists($this, 'fld')) {
但为什么我不能只使用isset呢?
if (isset($this->fld)) {
答案 0 :(得分:79)
因为property_exists
会告诉你它是否甚至是一个定义的类/对象属性,而asset也没有这个区别。例如:
class A {
protected $hello;
}
class B {
}
在 A类中使用property_exists($this, 'hello')
将返回true
,而在 B类中使用它将返回false
。 isset
将在两个实例中返回false
。
答案 1 :(得分:5)
这取决于你的程序是如何完成的,但是如果你阅读了手册中的注释,它将有助于解释函数的特性。
http://php.net/manual/en/function.property-exists.php
重要的部分在这里:
文档遗漏了 新属性的重要案例你 在运行时添加到对象。事实上, 如果,property_exists将返回true 你问这个属性。