2011-06-10 14 views
22

PHP Fatal error: No se puede acceder Excepción propiedad protegida :: $ mensaje en /web/index.php en la línea 23PHP no puede acceder a la propiedad protegida de error

en la línea 23 que tengo,

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

I No puedo ver nada mal con esto, pero veo la excepción anterior de vez en cuando en los registros. ¿Qué pasa?

Respuesta

58

Uso $e->getMessage() en lugar de $e->message porque el mensaje es una propiedad protegida :)

+0

Gracias por la respuesta rápida. Voy a probar esto – Ram

+0

Eso funcionó perfectamente en mi proyecto TYPO3 Extbase, excepto que usé '$ this-> user-> getUsergroup()'. El principio de la obtención de principios: empiezo a entenderlo. – Mateng

+0

Usar molestamente '$ e-> getMessage()' en mi excepción da como resultado un error al llamar a una función no definida de mi bloque try catch: / –

16

$message es un protected miembro de la clase Excepción, como indica el mensaje de error. Desea que el descriptor de acceso público getMessage:

$e->getMessage() 
+0

Gracias por la rápida respuesta. Voy a probar esto. – Ram

3

miembros declarados protegidos sólo se puede acceder dentro de la clase en sí y por las clases heredadas y de los padres.

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 

Usted puede cavar más en Visibilidad Propiedadhere

Cuestiones relacionadas