sql >> Base de Datos >  >> RDS >> Mysql

Diferencia entre -> y ::en PHP MySQLi OOP

-> se usa cuando se hace referencia a un miembro de un objeto.

:: es el Operador de resolución de alcance y se usa para referirse a un miembro estático de una clase.

Considere la siguiente clase:

class FooBar {
    public static function fizz() {
        echo "Fizz";
    }

    public function buzz() {
        echo "Buzz";
    }
}

Llamarías a la función buzz() usando -> :

$myFooBar = new FooBar();
$myFooBar->buzz();

Pero usaría :: para llamar a la función fizz() , ya que es un miembro estático (un miembro que no requiere una instancia de la clase para ser llamado):

FooBar::fizz();

Además, mientras hablamos de la diferencia entre estático miembros versus instanciados miembros, no pueden usar $this para referirse a la instancia actual dentro de static miembros Usas self en su lugar (sin $ inicial ) que se refiere a la clase actual, o parent si desea hacer referencia a la clase principal, o si tiene el placer de trabajar con PHP 5.3.0, static (que permite el enlace estático tardío).

La documentación usa :: para referirse a una función dentro de una clase ya que el nombre de la clase en el encabezado no es una instancia de la clase. Todavía usando el mismo ejemplo, una entrada de documentación que hace referencia a la función buzz() usaría el siguiente encabezado:

FooBar::buzz

Pero a menos que la documentación especifique que es un miembro estático, deberá usar -> en una instancia para llamarlo:

$myFooBar = new FooBar();
$myFooBar->buzz();