PHP无法访问受保护的属性错误

Ram*_*Ram 30 php

PHP致命错误:无法在第23行的/web/index.php中访问受保护的属性Exception :: $ message

我在第23行,

echo '<?xml version=\'1.0\'?><error-response status="error">
<message><![CDATA['.$e->message.']]></message>
</error-response>';
Run Code Online (Sandbox Code Playgroud)

我看不出有什么问题,但我偶尔会在日志中看到上述异常.怎么了?

Kar*_*Øie 74

使用$e->getMessage()而不是$e->message因为消息是受保护的属性:)


mea*_*gar 16

$message是错误消息所声明的类Exception 的受保护成员.你想要公共访问器getMessage:

$e->getMessage()
Run Code Online (Sandbox Code Playgroud)


Rav*_*kam 6

声明为 protected 的成员只能在类本身内部以及继承类和父类中访问。

class MyClass {
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private
Run Code Online (Sandbox Code Playgroud)

您可以在此处深入了解财产可见性