检测受保护的方法并避免致命错误

我必须从一个目录中存储多个类的属性。

我在收集受保护和公共财产方面没有问题。

我只追求公众,所以一切都很好。

我做的事:

$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函数


如果你使用protectedprivate那么你的构造函数将不能从课程外部访问。

调用$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