检测受保护的方法并避免致命错误
我必须从一个目录中存储多个类的属性。
我在收集受保护和公共财产方面没有问题。
我只追求公众,所以一切都很好。
我做的事:
$foo = new Foo(); $reflect = new ReflectionClass($foo); $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED); foreach ($props as $prop) { print $prop->getName() . "n"; }
但是,有些类确实有保护方法,例如:
class Foo { public $foo = 1; protected $bar = 2; private $baz = 3; protected function __construct() { } }
一旦我参加了这样的课程,我就会遇到一个致命的错误,这会阻碍我的努力:
Fatal error: Call to protected Foo::__construct() from context 'View' in [path/goes/here]
什么是最好的方法呢? (如果有的话)
更改
$foo = new Foo();
$reflect = new ReflectionClass($foo);
至
$reflect = new ReflectionClass('Foo');
如果您确实想创建一个新实例,请查看newInstanceWithoutConstructor
函数
如果你使用protected
或private
那么你的构造函数将不能从课程外部访问。
调用$foo = new Foo();
会抛出一个错误。
$reflect = new ReflectionClass('Foo');
echo $reflect->getName();// output Foo
链接地址: http://www.djcxy.com/p/60257.html
上一篇: detect protected method and avoid fatal error
下一篇: need help understanding the declaration of class properties