Saltar al contenido

función estática php

Solución:

En la primera clase, sayHi() es en realidad un método de instancia al que está llamando como un método estático y se sale con la suya porque sayHi() nunca se refiere a $this.

Las funciones estáticas están asociadas con la clase, no una instancia de la clase. Como tal, $this no está disponible en un contexto estático ($this no apunta a ningún objeto).

Simplemente, las funciones estáticas funcionan independientemente de la clase a la que pertenecen.

$ esto significa que este es un objeto de esta clase. No se aplica a funciones estáticas.

class test {
    public function sayHi($hi = "Hi") {
        $this->hi = $hi;
        return $this->hi;
    }
}
class test1 {
    public static function sayHi($hi) {
        $hi = "Hi";
        return $hi;
    }
}

//  Test
$mytest = new test();
print $mytest->sayHi('hello');  // returns 'hello'
print test1::sayHi('hello');    //  returns 'Hi'

Toda la diferencia es que no obtienes $this suministrado dentro de la función estática. Si intentas usar $this, obtendrás un Fatal error: Using $this when not in object context.

Bueno, está bien, otra diferencia: una E_STRICT La advertencia es generada por su primer ejemplo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *