Trong bài này, chúng ta sẽ tìm hiểu về static property và static method trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.
1. Phương thức tĩnh (static method) trong PHP
Phương thức tĩnh (static method) có thể được gọi trực tiếp bằng tên của lớp (class) chứa nó mà không cần phải tạo một đối tượng của lớp. Static method được khai báo với từ khóa static:
<?php
class MyClass {
//declare a static method with static keyword
public static function staticMethod() {
echo "Welcome to gochocit.com!";
}
}
?>
Để gọi static method, chúng ta sử dụng tên lớp, toán tử :: và tên static method.
MyClass::staticMethod();
Một lớp có thể có cả phương thức static và non-static. Một static method có thể được truy cập từ một non-static method trong cùng một lớp bằng cách sử dụng từ khóa self
và toán tử ::
.
<?php
class MyClass {
//static method
public static function welcome() {
echo "Welcome to gochocit.com!";
}
//constructor
public function __construct() {
self::welcome();
}
}
$class1 = new MyClass();
?>
Kết quả
Welcome to gochocit.com!
Những static method có access modifier là public có thể được gọi từ những lớp khác.
<?php
class MyClass {
//static method
public static function welcome() {
echo "Welcome to gochocit.com!";
}
}
class Greeting {
public function message() {
MyClass::welcome();
}
}
?>
Chúng ta cũng có thể gọi một static method từ một lớp con. Để thực hiện việc này, chúng ta cần sử dụng từ khóa parent
. Và access modifier của static method phải là public hoặc protected.
<?php
class Animal {
//static method
protected static function info() {
echo "This is an animal.";
}
}
class Cat extends Animal{
public function __construct() {
parent::info();
echo "<br>I am a Cat.";
}
}
new Cat();
?>
Kết quả
This is an animal.
I am a Cat.
2. Thuộc tính tĩnh (static property) trong PHP
Thuộc tính tĩnh (static property) có thể được gọi trực tiếp bằng tên của lớp (class) chứa nó mà không cần phải tạo một đối tượng của lớp. Static property được khai báo với từ khóa static:
<?php
class MyClass {
public static $staticProp = "Gochocit.com";
}
?>
Để gọi static property, chúng ta sử dụng tên lớp, toán tử :: và tên static property.
MyClass::$staticProp;
Một lớp có thể có cả thuộc tính static và non-static. Một thuộc tính static có thể được truy cập từ một method trong cùng một lớp bằng cách sử dụng từ khóa self
và toán tử ::
.
<?php
class MyWebSite {
public static $domainname = "Gochocit.com";
public function getDomainName() {
return self::$domainname;
}
}
$web = new MyWebSite();
echo $web->getDomainName();
?>
Kết quả
Gochocit.com
Chúng ta có thể gọi một thuộc tính static từ một lớp con bằng cách sử dụng từ khóa parent
. Và access modifier của static method phải là public hoặc protected.
<?php
class MyWebSite {
public static $domainname = "Gochocit.com";
}
class MyShop extends MyWebSite{
public function getDommainName() {
return parent::$domainname;
}
}
$shop = new MyShop();
echo $shop->getDommainName();
?>
Kết quả
Gochocit.com
Chúng ta đã vừa tìm hiểu static method và static property của lớp (class) trong PHP. Chúng đều là các thành phần của lớp chứ không phải của đối tượng thuộc lớp. Và chúng có thể dễ dàng được truy cập thông qua tên lớp.