Các thuộc tính, phương thức trong lớp khai báo với từ khóa static
là một đặc tính hữu dụng trong PHP. Phương thức / thuộc tính tĩnh (static) thì nó có thể truy cập trực tiếp
mà không phải tạo đối tượng của lớp. Lớp là tĩnh nếu tất cả các phương thức và thuộc tĩnh là tĩnh.
Biến - Thuộc tính tĩnh (static)
Một thuộc tính (biến) khai báo là static
có thể truy cập bằng ký hiệu phạm vi ::
<?php class testStaticVar { public static $a;//biến tĩnh } testStaticVar::$a = 5; echo testStaticVar::$a; ?>
Bên trong một hàm của class
bạn có thể truy cập biến tĩnh bằng từ khóa self::tên_biến_tĩnh
, để truy cập tới biến của lớp cha nó kế thừa dùng
parent::tên_biến_tĩnh
<? class testParent { public static $var1; } class testChild extends testParent { public static $var2; function testFunction() { self::$var2 = 3; parent::$var1 = 5; } } ?>
Sử dụng biến tĩnh là cách để lưu giữ/trao đổi giá trị của một biến thông qua các đối tượng khác nhau. Ví dụ biến self::$bien
ở đây là lưu trữ chung cho các lớp khác nhau tạo ra
từ Test
<?php class Test { public static $bien = 0; public function __construct() { self::$bien += 1; echo self::$bien; } } $test1 = new Test(); //In ra 1 $test2 = new Test(); //In ra 2 ?>
Phương thức tĩnh
Cách tạo ra phương thức tĩnh và cách gọi phương thức tính tương tự như thuộc tính tĩnh, bằng cách sử dụng từ khóa static
khi khai báo và ::
khi gọi hàm.
Với hàm tĩnh bạn không sử dụng con trỏ $this
để gọi trực tiếp.
<?php class testStaticMethod { public static function test($pr1, $pr2) { echo $pr1.'-'.$pr2; } } testStaticMethod::test('Học', 'PHP'); ?>