Tại sao chúng ta sử dụng tính trừu tượng trong php?

PHP5 đi kèm với mô hình hướng đối tượng với nó, Một số khái niệm về mô hình hướng đối tượng là. lớp, đối tượng, đóng gói, đa hình, lớp trừu tượng và lớp cuối cùng, phương thức, giao diện và kế thừa, v.v. Trong bài báo này,

chúng ta sẽ thảo luận về Lớp trừu tượng và các tính năng của nó liên quan đến các kỹ thuật hướng đối tượng trong PHP. Ngoài ra, chúng ta sẽ tìm hiểu cách triển khai Lớp trừu tượng cùng với một số ví dụ

Tuy nhiên, trước khi tìm hiểu quá sâu, hãy tìm hiểu cách định nghĩa lớp trừu tượng

Chúng ta có thể khai báo một lớp là trừu tượng bằng cách gắn tên của lớp với từ khóa trừu tượng. Định nghĩa rất rõ ràng, lớp chứa các phương thức trừu tượng được gọi là lớp trừu tượng. Các phương thức trừu tượng định nghĩa trong lớp trừu tượng chỉ có tên và đối số, không có mã nào khác

Không thể tạo đối tượng của lớp trừu tượng. Thay vào đó, chúng ta cần mở rộng các lớp con tính toán định nghĩa của hàm thành phần thân của các phương thức trừu tượng trong các lớp con và sử dụng các lớp con này để tạo các đối tượng.

Hãy thảo luận về một số thông tin quan trọng về các lớp trừu tượng trong PHP

1. Một lớp trừu tượng có thể có trừu tượng cùng với các phương thức không trừu tượng

Thí dụ

getdata();
?>

đầu ra

Tutorials Point

2. Không thể khởi tạo trực tiếp

Thí dụ

adddata();
?>

đầu ra

Fatal error: Uncaught Error: Cannot instantiate abstract class AbstractClass

3. Khả năng hiển thị tương tự (hoặc ít bị hạn chế hơn)

Tất cả các lớp con phải định nghĩa tất cả các phương thức được đánh dấu là trừu tượng trong lớp cha, với tất cả các phương thức này cần được xác định bằng cùng một chữ ký hoặc chữ ký ít bị hạn chế hơn. Giả sử Trong lớp cha, nếu chúng ta định nghĩa một phương thức trừu tượng với khả năng hiển thị được bảo vệ, thì trong quá trình thực thi lớp con, nó phải được xác định bằng bảo vệ hoặc công khai, nhưng không phải với riêng tư

Thí dụ

addValue();
?>

đầu ra

Fatal errorAccess level to ConcreteClass::addValue() must be public (as in class AbstractBaseClass1)

4. Một phương thức trừu tượng không thể chứa phần thân

Các phương thức được khai báo là trừu tượng chỉ cần khai báo chữ ký của phương thức - chúng không thể định nghĩa bất kỳ ai bên trong chúng. Mặc dù cơ thể có thể hiện diện bên trong một phương pháp không trừu tượng

Thí dụ

printValue();
?>

đầu ra

PHP Fatal error: Abstract function ParentClass::printValue() cannot contain body

5. Bất kỳ lớp nào chứa ít nhất một phương thức trừu tượng phải được khai báo là lớp trừu tượng

Một lớp trừu tượng có thể có các phương thức trừu tượng và không trừu tượng, nhưng nó phải chứa ít nhất một phương thức trừu tượng. Nếu nó chứa một phương thức trừu tượng thì nó phải được khai báo là trừu tượng

Thí dụ

________số 8_______

đầu ra

PHP Fatal error: Class AbstractClass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (AbstractClass::getValue)

6. Lớp trừu tượng không hỗ trợ đa kế thừa

Nó không hỗ trợ đa kế thừa

Thí dụ

Tutorials Point
0

đầu ra

Tutorials Point
1

Giải trình

Ở đây chúng ta đã khai báo SuperClass là một lớp trừu tượng có phương thức test() và welcome(), ClassA và ClassB và các lớp cụ thể mở rộng từ một lớp trừu tượng. Sau đó, chúng tôi đã cố gắng tạo Lớp mở rộng từ Lớp và Lớp B. Như rõ ràng từ đoạn mã, khi gọi phương thức welcome() sử dụng đối tượng ClassC, trình biên dịch không thể chọn xem nó phải gọi phương thức welcome() của ClassA hay phương thức welcome() của ClassB. Vì vậy, để tránh những phức tạp như vậy, PHP không hỗ trợ đa kế thừa

Ghi chú

Một lớp trừu tượng có thể mở rộng một lớp trừu tượng khác, Lớp trừu tượng có thể cung cấp việc triển khai giao diện

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ó user nameuser 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

<?php
abstract class User {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getUserName() {
        return $this->name;
    }

    public abstract function getUserType();
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Nhưng riêng lớp trừu tượng này sẽ không làm được gì nhiều. Nếu bạn tạo một đối tượng Người dùng, bạn sẽ có một người dùng không có chức năng. Điều này không tồn tại trên webshop của chúng tôi. Vì vậy, để làm cho nó hữu ích, chúng tôi tạo hai loại người dùng

<?php
class Customer extends User{
    private $id

    public function __construct($name, $id) {
        $this->name = $name;
        $this->id = $id;
    }

    public function getUserType() {
        return 'customer';
    }
}

class Employee extends User{
    private $id

    public function __construct($name, $id) {
        $this->name = $name;
        $this->id = $id;
    }

    public function getUserType() {
        return 'employee';
    }
}

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Như bạn có thể thấy, các lớp này được mở rộng từ lớp trừu tượng của chúng ta. Điều này có nghĩa là phương thức getUserName() được bao gồm/có thể truy cập được, mặc dù không trực quan trong các lớp con của chúng ta

Ngoài ra, mọi phương thức được viết trong lớp trừu tượng cha có thể được ghi đè trong lớp con. Như bạn có thể thấy, chúng tôi đã xác định getUserType(), nhưng chưa có bất kỳ chức năng nào. Trong các lớp con, chúng tôi ghi đè phương thức này và cung cấp cho nó chức năng. Điều này bây giờ sẽ cho chúng tôi biết thêm về loại người dùng đang được sử dụng

Tại sao trừu tượng được sử dụng trong PHP?

Trừu tượng hóa trong PHP . Nó chỉ hiển thị thông tin hữu ích, còn lại là ẩn dưới dạng người dùng cuối . Trừu tượng hóa là bất kỳ biểu diễn nào của dữ liệu trong đó các chi tiết triển khai bị ẩn (trừu tượng hóa).

Mục đích chính của trừu tượng hóa là gì?

Mục đích chính của tính trừu tượng là ẩn người dùng những chi tiết không cần thiết . Trừu tượng hóa đang chọn dữ liệu từ một nhóm lớn hơn để chỉ hiển thị các chi tiết có liên quan của đối tượng cho người dùng. Nó giúp giảm bớt sự phức tạp và nỗ lực lập trình. Đây là một trong những khái niệm quan trọng nhất của OOP.

lợi ích của sự trừu tượng là gì?

Trừu tượng hóa làm cho mọi thứ đơn giản hơn, dễ thay đổi hơn, dễ triển khai hơn, dễ ghi lại hơn . Nó có thể tránh viết mã phức tạp nhiều lần, đơn giản hóa thiết kế, tối ưu hóa và lập chỉ mục, và cuối cùng là tăng khả năng bảo trì của giải pháp.

Tại sao chúng ta sử dụng lớp trừu tượng và giao diện trong PHP?

Các lớp trừu tượng cho phép bạn cung cấp một số mức độ triển khai, các giao diện là các mẫu thuần túy. Một giao diện chỉ có thể xác định chức năng, nó không bao giờ có thể thực hiện nó. Bất kỳ lớp nào triển khai giao diện cam kết thực hiện tất cả các phương thức mà nó định nghĩa hoặc nó phải được khai báo trừu tượng