PHP - Tính chất tĩnh (Static Properties)
Xin chào các bạn đang học lập trình! Hôm nay, chúng ta sẽ cùng khám phá thế giới thú vị của các tính chất tĩnh trong PHP. Đừng lo lắng nếu bạn là người mới bắt đầu lập trình - tôi sẽ hướng dẫn bạn từng bước với cùng sự kiên nhẫn mà tôi đã sử dụng trong lớp học trong nhiều năm. Hãy bắt đầu nào!
Tính chất tĩnh là gì?
Trước khi chúng ta nhảy vào mã, hãy hiểu qua về tính chất tĩnh là gì. Hãy tưởng tượng bạn đang ở trong một lớp học (như lớp học của tôi!), và có một bảng trắng mà mọi người đều có thể nhìn thấy và viết lên. Một tính chất tĩnh giống như bảng trắng đó - nó thuộc về lớp itself, không phải thuộc về bất kỳ học sinh nào (hoặc đối tượng nào, trong thuật ngữ lập trình).
Các đặc điểm chính của tính chất tĩnh:
- Chúng được chia sẻ giữa tất cả các thể hiện của một lớp.
- Chúng có thể được truy cập mà không cần tạo đối tượng của lớp.
- Chúng được khai báo bằng từ khóa
static
.
Bây giờ, hãy xem điều này hoạt động như thế nào trong thực tế!
Ví dụ về tính chất tĩnh
Hãy tạo một lớp đơn giản gọi là Counter
để minh họa tính chất tĩnh:
class Counter {
public static $count = 0;
public function increment() {
self::$count++;
}
public static function getCount() {
return self::$count;
}
}
Hãy phân tích này:
- Chúng ta khai báo một tính chất tĩnh
$count
và khởi tạo nó bằng 0. - Phương thức
increment()
tăng giá trị đếm lên 1. - Phương thức
getCount()
trả về giá trị hiện tại của đếm.
Bây giờ, hãy sử dụng lớp này:
echo Counter::$count; // Xuất: 0
$counter1 = new Counter();
$counter1->increment();
echo Counter::$count; // Xuất: 1
$counter2 = new Counter();
$counter2->increment();
echo Counter::$count; // Xuất: 2
echo Counter::getCount(); // Xuất: 2
Thật tuyệt vời phải không? Không matter bao nhiêu đối tượng Counter
chúng ta tạo ra, chúng đều chia sẻ cùng một $count
. Nó giống như tất cả các học sinh trong lớp tôi chia sẻ một bảng đếm!
Từ khóa "self"
Bạn có thể đã nhận thấy chúng tôi đã sử dụng self::$count
trong lớp của chúng tôi. Từ khóa self
giống như nói "lớp này" - nó tham chiếu đến lớp hiện tại. Nó đặc biệt hữu ích với các tính chất và phương thức tĩnh.
Hãy mở rộng lớp Counter
của chúng ta để xem thêm các sử dụng của self
:
class Counter {
public static $count = 0;
private static $secretCount = 100;
public function increment() {
self::$count++;
self::incrementSecretCount();
}
private static function incrementSecretCount() {
self::$secretCount++;
}
public static function getSecretCount() {
return self::$secretCount;
}
}
Ở đây, chúng ta đã thêm một $secretCount
là riêng tư (shh, nó là một bí mật!). Chúng ta sử dụng self
để truy cập cả các tính chất và phương thức tĩnh trong lớp.
Từ khóa "parent"
Bây giờ, hãy nói về kế thừa và từ khóa parent
. Hãy tưởng tượng bạn đang học nấu ăn từ cha mẹ của bạn. Bạn có thể sử dụng một số công thức của họ (phương thức kế thừa) nhưng thêm một chút twist của riêng bạn. Trong PHP, parent
cho phép bạn truy cập các phương thức và tính chất từ lớp cha.
Hãy tạo một SuperCounter
kế thừa Counter
của chúng ta:
class SuperCounter extends Counter {
public function superIncrement() {
parent::increment();
parent::increment();
self::$count++; // Chúng ta vẫn có thể sử dụng self cho tính chất kế thừa
}
}
Sử dụng SuperCounter
của chúng ta:
$superCounter = new SuperCounter();
$superCounter->superIncrement();
echo SuperCounter::$count; // Xuất: 3
Phương thức superIncrement()
gọi phương thức increment()
của lớp cha hai lần và sau đó tăng một lần nữa, dẫn đến tổng tăng là 3.
Bảng tóm tắt các phương thức liên quan đến tĩnh
Hãy tóm tắt các phương thức tĩnh mà chúng ta đã thấy trong một bảng tiện lợi:
Phương thức | Mô tả |
---|---|
self::$property |
Truy cập một tính chất tĩnh trong cùng lớp |
self::method() |
Gọi một phương thức tĩnh trong cùng lớp |
ClassName::$property |
Truy cập một tính chất tĩnh từ bên ngoài lớp |
ClassName::method() |
Gọi một phương thức tĩnh từ bên ngoài lớp |
parent::method() |
Gọi phương thức của lớp cha trong lớp con |
Kết luận
Và thế là bạn đã có, các bạn! Chúng ta đã khám phá thế giới của các tính chất tĩnh trong PHP, từ việc sử dụng cơ bản đến kế thừa. Nhớ rằng, các tính chất tĩnh giống như bảng trắng trong lớp học - chia sẻ bởi tất cả và có thể truy cập bởi bất kỳ ai biết tên lớp.
Như với bất kỳ công cụ nào trong lập trình, hãy sử dụng các tính chất tĩnh một cách khôn ngoan. Chúng rất hữu ích cho các bộ đếm, thiết lập cấu hình, hoặc bất kỳ dữ liệu nào nên được chia sẻ giữa tất cả các thể hiện của một lớp. Nhưng việc lạm dụng chúng có thể dẫn đến mã khó quản lý và kiểm tra.
Tiếp tục luyện tập, và sớm bạn sẽ sử dụng các tính chất tĩnh như một chuyên gia! Và nhớ rằng, trong lập trình cũng như trong lớp học của tôi, không có câu hỏi ngốc nghếch - chỉ có cơ hội để học hỏi. Chúc các bạn lập trình vui vẻ!
Credits: Image by storyset