Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Diferença entre -> e ::no PHP MySQLi OOP


-> é usado quando se refere a um membro de um objeto.

:: é o Operador de Resolução de Escopo e é usado para se referir a um membro estático de uma classe.

Considere a seguinte classe:
class FooBar {
    public static function fizz() {
        echo "Fizz";
    }

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

Você chamaria a função buzz() usando -> :
$myFooBar = new FooBar();
$myFooBar->buzz();

Mas usaria :: para chamar a função fizz() , pois é um membro estático (um membro que não requer que uma instância da classe seja chamada):
FooBar::fizz();

Além disso, enquanto estamos falando sobre a diferença entre estático membros versus instanciados membros, você não pode usar $this para se referir à instância atual dentro de static membros. Você usa self em vez disso (sem $ inicial ) que se refere à classe atual, ou pai

código>
se você quiser consultar a classe pai ou se tiver o prazer de trabalhar com PHP 5.3.0, static (que permite a ligação estática tardia).

A documentação usa :: para se referir a uma função dentro de uma classe como o nome da classe no cabeçalho não é uma instância da classe. Ainda usando o mesmo exemplo, uma entrada de documentação referente à função buzz() usaria o seguinte cabeçalho:
FooBar::buzz

Mas, a menos que a documentação especifique que é um membro estático, você precisará usar -> em uma instância para chamá-lo:
$myFooBar = new FooBar();
$myFooBar->buzz();