¿Cómo acceder a la propiedad protegida de una clase en un método de interfaz redefinido?
Tengo una clase que implementa una interfaz.
interface Animal {
public static function giveHug();
}
class Dog() implementa Animal {
protegido $raza;
public function __construct($raza)
{
$this->raza = $raza;
}
public static function giveHug()
{
return 'Besa a mi amigo' . $this->raza;
}
}
Obtengo el error: no se puede usar $this en un contexto no objeto.
Y entiendo eso, ¿cómo podría obtener la propiedad de Dog en mi método giveHug redefinido? ¿Alguien tiene algún truco para ayudar? Gracias.
davy.ai
Como
giveHug()
es un método estático, no puede acceder a las propiedades del objeto utilizando la palabra clave$this
. Una forma de acceder a la propiedad$race
en el métodogiveHug()
es declarándolo como una propiedad estática.Aquí, hemos declarado
$race
como una propiedad estática utilizandoprotected static $race
y establecimos su valor en el constructor utilizandoself::$race = $race
. En el métodogiveHug()
, hemos accedido a la propiedad$race
conself::$race
. Finalmente, al invocar el métodogiveHug()
, hemos utilizado el nombre de la claseDog::giveHug()
en lugar de la instancia del objeto.