->
được sử dụng khi đề cập đến một thành viên của một đối tượng.
::
là Toán tử phân giải phạm vi
và được sử dụng để chỉ một thành viên tĩnh của một Lớp.
Hãy xem xét lớp sau:
class FooBar {
public static function fizz() {
echo "Fizz";
}
public function buzz() {
echo "Buzz";
}
}
Bạn sẽ gọi hàm buzz ()
sử dụng ->
:
$myFooBar = new FooBar();
$myFooBar->buzz();
Nhưng sẽ sử dụng ::
để gọi functon fizz ()
, vì nó là một thành viên tĩnh (một thành viên không yêu cầu một phiên bản của lớp được gọi):
FooBar::fizz();
Ngoài ra, trong khi chúng ta đang nói về sự khác biệt giữa tĩnh thành viên so với khởi tạo thành viên, bạn không thể sử dụng $ this
để tham chiếu đến phiên bản hiện tại trong static các thành viên. Bạn sử dụng self
thay vào đó (không có $
đứng đầu ) tham chiếu đến lớp hiện tại hoặc cha
nếu bạn muốn tham chiếu đến lớp cha hoặc nếu bạn thích làm việc với PHP 5.3.0, static
(cho phép liên kết tĩnh trễ).
Tài liệu sử dụng ::
để tham chiếu đến một hàm bên trong một lớp vì tên lớp trong tiêu đề không phải là một thể hiện của lớp. Vẫn sử dụng cùng một ví dụ, một mục nhập tài liệu đề cập đến hàm buzz ()
sẽ sử dụng tiêu đề sau:
FooBar::buzz
Nhưng trừ khi tài liệu chỉ định đó là thành viên tĩnh, bạn sẽ cần sử dụng ->
trên một ví dụ để gọi nó:
$myFooBar = new FooBar();
$myFooBar->buzz();