判断类的变量是否存在,可以用isset和property_exists判断,他们俩有着细微的区别。首先我们翻一下手册了解一下两者的具体功能。
property_exists:检查对象或类是否具有该属性(以及是否能在当前范围内访问)。如下图
只要是类定义了该变量,无论是public还是private,用property_exists都能检测出来。
isset:检测变量是否已设置并且非 NULL,如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。
如下图,定义了类成员变量$param且没有给它赋值,此时isset判断是false,相当于没有这个变量,而property_exists为true。当$param有值时,isset和propery_exists都为true。当$param有值又unset掉该值时,propery_exists依然为true,而isset则为false。
总的来说,isset和property_exists都可以用来检验类成员变量,但是property_exists更准确点。