Giới thiệu
Trong một lớp PHP, các thuộc tính và phương thức được khai báo với từ khóa static không thể được truy cập bởi đối tượng của nó với sự trợ giúp của toán tử ->. Trên thực tế, đối tượng không bắt buộc phải truy cập vào bất kỳ thể hiện nào của lớp. Chế độ hiển thị mặc định của các mục tĩnh trong một lớp là công khai
thuộc tính tĩnh
Để truy cập thuộc tính tĩnh từ bên ngoài lớp, chúng ta cần sử dụng toán tử phân giải phạm vi (::) cùng với tên của lớp. Một biến chuỗi đánh giá thành tên của lớp cũng có thể cung cấp cho thuộc tính tĩnh
<?php class testclass{ static $name="test"; } echo testclass::$name; $var="testclass"; echo $var::$name; ?>
để sử dụng static propery bên trong bất kỳ phương thức nào của cùng một lớp, hãy sử dụng self từ khóa thay vì -> toán tử được sử dụng để truy cập các thuộc tính cá thể.
<?php class testclass{ static $name="test"; public function test(){ echo self::$name; } } $obj=new testclass(); $obj->test(); ?>
Bất kỳ thuộc tính tĩnh nào được khai báo trong lớp cha đều có thể được tham chiếu bên trong một phương thức của lớp con, bằng cách sử dụng cha từ khóa cùng với toán tử phân giải phạm vi
<?php class testclass{ static $name="test"; public function test(){ echo self::$name; } } class myclass extends testclass{ public function mytest(){ echo parent::$name; } } $obj=new myclass(); $obj->mytest(); ?>
phương thức tĩnh
Khi một phương thức được khai báo là tĩnh, biến giả $ this không có sẵn cho nó. Do đó, các thuộc tính cá thể của một lớp không thể được truy cập trong nó. Phương thức tĩnh được gọi theo tên của lớp cùng với toán tử phân giải phạm vi
Trong ví dụ sau, lớp có một thuộc tính tĩnh $ count sẽ xuất hiện mỗi khi phương thức khởi tạo được thực thi (tức là cho mỗi đối tượng). Bên trong lớp, có một hàm tĩnh lấy giá trị của thuộc tính tĩnh
Ví dụ
<?php class testclass{ static $count=0; function __construct(){ self::$count++; } static function showcount(){ echo "count = " . self::$count; } } $a=new testclass(); $b=new testclass(); $c=new testclass(); testclass::showcount(); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau -
count = 3