Mysql
 sql >> Database >  >> RDS >> Mysql

Differenza tra -> e ::in PHP MySQLi OOP

-> viene utilizzato quando si fa riferimento a un membro di un oggetto.

:: è l'operatore di risoluzione dell'ambito ed è usato per fare riferimento a un membro statico di una Classe.

Considera la seguente classe:

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

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

Dovresti chiamare la funzione buzz() utilizzando -> :

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

Ma userebbe :: per chiamare la funzione fizz() , in quanto è un membro statico (un membro che non richiede la chiamata di un'istanza della classe):

FooBar::fizz();

Inoltre, mentre stiamo parlando della differenza tra statico membri rispetto a istanziati membri, non puoi usare $this per fare riferimento all'istanza corrente all'interno di statico membri. Utilizzi self invece (nessun $ iniziale ) che si riferisce alla classe corrente, o parent se vuoi fare riferimento alla classe genitore, o se hai il piacere di lavorare con PHP 5.3.0, static (che consente l'associazione statica tardiva).

La documentazione utilizza :: fare riferimento a una funzione all'interno di una classe poiché il nome della classe nell'intestazione non è un'istanza della classe. Sempre usando lo stesso esempio, una voce di documentazione che fa riferimento alla funzione buzz() userebbe la seguente intestazione:

FooBar::buzz

Ma a meno che la documentazione non specifichi che si tratta di un membro statico, dovrai usare -> su un'istanza per chiamarla:

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