PHP手册中property_exists的范例是不是出错了?? 400 报错
刚才看函数property_exists
下面示例代码:
<?php class myClass { public $mine; private $xpto; static function test() { var_dump(property_exists('myClass', 'xpto')); // true, it can be accessed from here } } var_dump(property_exists('myClass', 'mine')); //true var_dump(property_exists(new myClass, 'mine')); //true var_dump(property_exists('myClass', 'xpto')); //false, isn't public myClass::test(); ?>
我在本地测试了一下,显示结果为
bool(true) bool(true) bool(true) bool(true)
都为true,我的是PHP5.3.3
这个怎么解释呢?
Note that before PHP 5.3.3, this function fails for private properties in base classes (which is fixed in 5.3.3)
<?php class Base { private $var = 1;
public function test() {
var_dump( property_exists( $this, 'var' ) );
}
}
class Derived extends Base { }
$b = new Base(); $b->test(); $d = new Derived(); $d->test(); ?>
Executing this code with PHP 5.0 <= x < 5.3 this script echoes (incorrect result):
bool(true)
bool(false)
Executing this code with PHP 5.3 this script echoes (correct result):
bool(true)
bool(true)
在php5.3.3中已经修复了这个问题。你的例子的测试结果是在5.3.3版本之前得出的,所以有一定的出入。在php5.3.3中得出全部ture的结果是正常的。
引自:http://cn2.php.net/property_exists
<?php class Base { private $var = 1; public function test() { var_dump( property_exists( $this, 'var' ) ); } } class Derived extends Base { } $b = new Base(); $b->test(); $d = new Derived(); $d->test(); ?>
Executing this code with PHP 5.0 <= x < 5.3 this script echoes (incorrect result):
bool(true)
bool(false)
Executing this code with PHP 5.3 this script echoes (correct result):
bool(true)
bool(true)
在php5.3.3中已经修复了这个问题。你的例子的测试结果是在5.3.3版本之前得出的,所以有一定的出入。在php5.3.3中得出全部ture的结果是正常的。
引自:http://cn2.php.net/property_exists
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。