40 votes

PHP ne peut pas accéder à une erreur de propriété protégée

Je ne vois rien de mal à cela, mais je vois occasionnellement l'exception ci-dessus dans les journaux. Qu'est-ce qui ne va pas?

Erreur fatale PHP : impossible d'accéder à la propriété protégée Exception : : $message dans /web/index.php à la ligne 23

Sur la ligne 23 j'ai,

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

90voto

Karl Øie Points 3790

Utilisez $e->getMessage() au lieu de $e->message car le message est une propriété protégée :)

20voto

meagar Points 85475

$message est un membre protégé de la classe Exception, comme l'indique le message d'erreur. Vous voulez l'accesseur public getMessage :

 $e->getMessage()

4voto

RaviRokkam Points 681

Les membres déclarés protégés ne sont accessibles qu'au sein de la classe elle-même et par les classes héritées et parentes.

 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

Vous pouvez en savoir plus sur la visibilité de la propriété ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X