Подтвердить что ты не робот

PHP не может получить доступ к защищенной ошибке свойства

PHP Неустранимая ошибка: не удается получить доступ к защищенному свойству Exception:: $message в /web/index.php в строке 23

В строке 23 я,

echo '<?xml version=\'1.0\'?><error-response status="error">
<message><![CDATA['.$e->message.']]></message>
</error-response>';

Я не вижу ничего плохого в этом, но я вижу это исключение изредка в журналах. Что не так?

4b9b3361

Ответ 1

Используйте $e->getMessage() вместо $e->message, потому что сообщение является защищенным свойством:)

Ответ 2

$message является защищенным членом класса Exception, как указано в сообщении об ошибке. Вы хотите публичный доступ getMessage:

$e->getMessage()

Ответ 3

Объявленные защищенные члены могут быть доступны только внутри самого класса и по унаследованным и родительским классам.

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

Вы можете больше копать в Видимость свойств здесь