-> é 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();