Các lớp trừu tượng trong PHP được sử dụng để mở rộng các lớp khác. Được sử dụng khi nhiều hơn một lớp sử dụng cùng một logic. Dễ đọc và ẩn các chi tiết nhỏ hơn [rõ ràng] để làm cho cuộc sống của chúng ta đơn giản hơn
Ví dụ
Giả sử chúng ta có một webshop với 2 loại Người dùng. khách hàng và nhân viên. Người dùng, bất kể là khách hàng hay nhân viên, luôn có một user name
và user type
. Mặc dù loại khác nhau cho mỗi người dùng, tên luôn giống nhau. tên tài khoản. Đây là cách lớp trừu tượng của chúng ta sẽ trông như thế nào
0, nếu không thì lớp con . Do đó, tất cả các lớp con bắt buộc phải cung cấp định nghĩa cho phương thức name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
0Phương thức phi trừu tượng trong lớp trừu tượng
Bất kỳ lớp nào có một phương thức trừu tượng duy nhất phải được khai báo trừu tượng. Nhưng một lớp trừu tượng cũng có thể có các phương thức không trừu tượng, có thể được truy cập và sử dụng trực tiếp bởi các lớp con mà không cần ghi đè chúng
Hãy mở rộng ví dụ trên và thêm một phương thức không trừu tượng vào lớp của chúng ta Vehicle
name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
Trong đoạn mã trên, chúng tôi đã thêm ba phương thức không trừu tượng là
name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
3, name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
4 và name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
5 vào lớp trừu tượng Vehicle
của chúng tôiKế thừa các lớp trừu tượng
Cũng giống như bất kỳ lớp nào khác, chúng ta cũng có thể tạo các lớp mở rộng các lớp trừu tượng
Sự khác biệt duy nhất ở đây là lớp con phải cung cấp định nghĩa cho phương thức trừu tượng được khai báo trong lớp cha trừu tượng
Nếu lớp con không cung cấp định nghĩa cho phương thức trừu tượng, thì nó cũng nên được định nghĩa là một lớp trừu tượng
Hãy tạo hai lớp con kế thừa lớp Vehicle
và sẽ có định nghĩa cho phương thức trừu tượng
name. " - Engine start...
";
}
// non-abstract public function stop
public function stop[] {
echo $this->name. " - Engine stop...
";
}
// non-abstract public function setName
public function setName[$name] {
$this->name = $name;
}
// abstract function mileage
abstract public function mileage[] {
}
}
?>
0name . "
";
echo "My mileage range is - 15 to 22 Km/L";
}
}
?>
Chúng ta có thể có bao nhiêu lớp con tùy thích, hãy tạo một lớp khác
name . "
";
echo "My mileage range is - 35 to 47 Km/L";
}
}
?>
Như đã đề cập ở trên rằng một lớp trừu tượng không thể có bất kỳ đối tượng nào, khi chúng ta đã định nghĩa các lớp con phù hợp, chúng ta có thể tạo đối tượng cho chúng