Trong lớp có thể khai báo các thuộc tính tĩnh (static property) và các phương thức tĩnh (static method) bằng cách dùng từ khóa static, các thành viên tĩnh này vài trường hợp 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 thông qua tên lớp với toán tử phân giải phạm vi truy cập ::, không cần phải tạo ra đối tượng lớp, trong phương thức tính không thể dùng $this (không thể truy cập các loại thành viên không phải tĩnh).

Thuộc tính tĩnh (static property)

Một thuộc tính khai báo là static có thể truy cập bằng ký hiệu phạm vi ::

class ClassA
{
    // $a_property khai báo là tính (static)
    public static $a_property;
}

// Truy cập thuộc tính tĩnh không cần phải tạo đối tượng lớp
ClassA::$a = 5;
echo ClassA::$a;

Từ khóa self và parent trong PHP

Bên trong một phương thức của lớp, bạn có thể sử dụng từ khóa self thay cho tên lớp để truy cập thành viên tĩnh của lớp self::property, và để truy cập tới thành viên tĩnh lớp cha thì dùng parent::property

class ParentClass
{
    public static $property_a;
}

class ChildClass extends ParentClass
{
    public static $property_b;

    function testFunction()
    {
        // Truy cập thành viên tĩnh
        self::$property_b = 3;
        parent::$property_a = 5;
    }
}

Sử dụng thuộc tính 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ụ đêm số lần mà một lớp được dùng để khởi tạo đối tượng

class Test {
    public static $count = 0;
    public function __construct()
    {
        self::$count += 1;
        echo self::$count;
    }

}

$test1 = new Test(); //In ra 1
$test2 = new Test(); //In ra 2

Khai báo phương thức tĩnh

Phương thức tĩnh khai báo giống phương thức thông thường nhưng có thêm từ khóa static. Với hàm tĩnh bạn không sử dụng $this để truy cập các thành viên khác được.

class TestStaticMethod {
    // test là phương thức tĩnh
    public static function test($pr1, $pr2) {
        echo $pr1.'-'.$pr2;
    }
}

// Truy cập phương thức tĩnh (không cần đối tạo đối tượng lớp)
TestStaticMethod::test('Học', 'PHP');

Các phương thức tĩnh được khai báo trong lớp chủ yếu là bổ xung các tiện tích, các trợ giúp phục vụ cho hoạt động của lớp. Các phương thức này hoạt động mà không cần truy cập vào dữ liệu hay các phương thức khác của lớp.


Đăng ký nhận bài viết mới