Mở rộng một lớp PHP

Trên đời có rất nhiều thứ liên quan đến nhau bằng cách này hay cách khác. Trong Lập trình hướng đối tượng [còn được gọi là OOP], một trong những khái niệm cơ bản là các đối tượng cũng có thể liên quan đến nhau. Dưới đây là một ví dụ về các mặt hàng liên quan đến giao thông vận tải trong thế giới thực

Cấu trúc thế giới thực

Transportation
    Ground
        Bicycle
        Tricycle
        Auto
            Truck
            Van
            Car
    Air
        Plane
        Helicopter
        Balloon

Cấu trúc lớp học

Chúng ta có thể định nghĩa tất cả các mối quan hệ trong thế giới thực này bằng cách sử dụng các lớp, như thế này

class transportation {

    private $thisClass;
    protected $transpoType = 'General';
    protected $fuelType = 'Various';

    public function __construct[] {

        $this->thisClass = get_class[$this];
    }

    public function showResult[] {

        echo 'The current class is '.$this->showClass[].'
';
        echo 'Transportation type is '.$this->showTranspoType[].'
';
        echo 'Fueled by '.$this->showFuelType[].'
';

    }

    final private function showClass[] {

        return $this->thisClass;

    }

    final private function showTranspoType[] {

        return $this->transpoType;

    }

    final private function showFuelType[] {

        return $this->fuelType;

    }
}

class ground extends transportation {

    protected $transpoType = 'Ground';

}

class air extends transportation {

    protected $transpoType = 'Air';

}

class bicycle extends ground {

    protected $transpoType = 'Bicycle';
    protected $fuelType = 'Manpower';

}

class tricycle extends ground {

    protected $transpoType = 'Tricycle';
    protected $fuelType = 'Manpower';

}

class auto extends ground {

    protected $transpoType = 'Auto';

}

class truck extends auto {

    protected $transpoType = 'Truck';
    protected $fuelType = 'Fossil Fuels';

}

class van extends auto {

    protected $transpoType = 'Van';
    protected $fuelType = 'Fossil Fuels';

}

class car extends auto {

    protected $transpoType = 'Car';
    protected $fuelType = 'Fossil Fuels';

}

class plane extends air {

    protected $transpoType = 'Plane';
    protected $fuelType = 'JP5 Jet Fuel';

}

class helicopter extends air {

    protected $transpoType = 'Helicopter';
    protected $fuelType = 'JP5 Jet Fuel';

}

class balloon extends air {

    protected $transpoType = 'Hot Air Balloon';
    protected $fuelType = 'Heated Air';

}

các yếu tố

Hãy dành một phút và xem xét những gì anh ấy đã làm ở đây

Lớp đầu tiên, vận chuyển, là công việc thực sự trong kịch bản này và chúng tôi sẽ gọi nó là lớp siêu hạng. Mỗi lớp có thể chứa các thuộc tính [biến] và phương thức [hàm]

Lớp này định nghĩa 3 thuộc tính, thisClass, transpoType và fuelType. Nó cũng định nghĩa 5 phương thức, __construct, showResult, showClass, showTranspoType và showFuelType. Các thuộc tính và phương thức được gọi là thành viên

Lưu ý các từ khóa công khai, được bảo vệ và riêng tư trước mỗi thành viên, những từ khóa này đặt khả năng hiển thị. Khả năng hiển thị xác định nơi thành viên có thể được sử dụng. Các thành viên công khai có thể được sử dụng bên ngoài cấu trúc lớp, các thành viên được bảo vệ chỉ có thể được sử dụng trong cấu trúc lớp và các thành viên riêng tư chỉ có thể được sử dụng trong lớp này

Cấu trúc lớp là siêu lớp này và mọi lớp con [lớp con] mở rộng nó. Một từ khóa khác mà bạn sẽ chú ý ở đây là từ khóa cuối cùng, điều này xác định thành viên là không thể thay đổi bởi bất kỳ lớp con nào. Chúng tôi sẽ thảo luận về những gì mỗi phương pháp thực hiện sau trong bài viết này

Lớp tiếp theo, mặt đất, mở rộng lớp vận chuyển. Bằng cách mở rộng lớp, nó kế thừa tất cả các thành viên của siêu lớp và có thể thay đổi những thành viên hiển thị với nó, thành viên công khai và được bảo vệ. Lớp này đang thay đổi giá trị của thuộc tính transpoType thành Ground

Bỏ qua lớp xe đạp mở rộng lớp mặt đất. Vì mặt đất đã mở rộng phương tiện giao thông, nên lớp này cũng kế thừa tất cả các thành viên của lớp siêu hạng và có thể thay đổi những thành phần hiển thị với nó. Nó đang thay đổi thuộc tính transpoType thành Xe đạp và thuộc tính FuelType thành Manpower

Khi bạn xem qua các lớp còn lại, bạn có thể thấy rằng chúng tôi đã tạo ra các mối quan hệ trong thế giới thực

Hãy quay trở lại super class và xem xét các phương thức sẽ thực hiện công việc

Phương pháp đầu tiên là __construct. Đây là một phương thức kỳ diệu được gọi bất cứ khi nào một lớp được khởi tạo. Vì không có lớp con nào gọi phương thức __construct, nên lớp này sẽ luôn là phương thức được gọi bất kể lớp nào được khởi tạo. Phương thức này đang định nghĩa thuộc tính thisClass với tên của lớp được khởi tạo

Lưu ý biến giả $this, bất cứ khi nào một lớp được khởi tạo dưới dạng đối tượng, $this tham chiếu đến đối tượng hiện tại. Chúng ta sẽ xem xét chi tiết hơn về $this sau

Phương thức tiếp theo là showResult và là phương thức công khai duy nhất chúng ta đã định nghĩa, có nghĩa là nó là phương thức duy nhất chúng ta có thể gọi từ bên ngoài cấu trúc lớp. Công việc của nó là xuất kết quả ra màn hình của chúng ta. Nó gọi các phương thức showClass, showTranspoType và showFuelType. Các phương thức này chỉ có một công việc và đó là trả về giá trị của các thuộc tính tương ứng của chúng

Nó được sử dụng như thế nào

Bạn có thể thắc mắc tại sao chúng tôi lại gặp khó khăn khi xây dựng cấu trúc lớp này. Câu trả lời là cách chúng ta có thể sử dụng nó. Tham khảo đoạn mã sau

$bicycle = new bicycle[];
$bicycle->showResult[];

Ở đây chúng tôi đã khởi tạo lớp xe đạp như một đối tượng mới mà chúng tôi đã đặt tên là $bicycle và sau đó gọi phương thức showResult. Đầu ra chúng ta sẽ nhận được là

The current class is bicycle
Transportation type is Bicycle
Fueled by Manpower

Như bạn có thể thấy, chúng tôi có các chi tiết liên quan đến một chiếc xe đạp. Bây giờ hãy chạy mã này

$plane = new plane[];
$plane->showResult[];

Đầu ra chúng ta sẽ nhận được là

The current class is plane
Transportation type is Plane
Fueled by JP5 Jet Fuel

Bây giờ chúng tôi có các chi tiết liên quan đến một chiếc máy bay

Nơi phép màu xảy ra

Điều kỳ diệu thực sự đang diễn ra với việc sử dụng biến giả, $this. Như đã đề cập trước đó, $this sẽ luôn đề cập đến đối tượng mà nó thuộc về

$bicycle là một đối tượng tham chiếu đến lớp xe đạp, mở rộng lớp mặt đất, mở rộng lớp vận chuyển. $plane là một đối tượng tham chiếu đến lớp máy bay, mở rộng lớp hàng không, mở rộng lớp vận chuyển

Việc sử dụng $this trong siêu lớp đề cập đến đối tượng, không phải lớp chứa nó, vì vậy kết quả là các thuộc tính như được xác định bởi lớp được tham chiếu

Khái niệm này là trung tâm của Mô hình đối tượng, một cấu trúc lớp được xác định rõ ràng có thể đại diện cho bất kỳ thứ gì chúng ta trải nghiệm trong thế giới thực

Phần kết luận

Sử dụng OOP trong ứng dụng PHP của bạn là một điều tốt nhưng một khi bạn nhận ra lý do tại sao, tất cả sẽ trở nên rõ ràng hơn và những gì bạn làm có ý nghĩa hơn nhiều. Bạn sẽ tự tin hơn rằng mình đang làm đúng khi bạn có thể thiết kế một mô hình đối tượng đáp ứng nhu cầu ứng dụng của bạn

Đăng nhận xét tại đây nếu bạn có câu hỏi hoặc các loại nhận xét khác về phần giới thiệu đơn giản này để triển khai các mô hình đối tượng trong PHP

Mở rộng một lớp trong PHP có nghĩa là gì?

Từ khóa mở rộng được dùng để dẫn xuất một lớp từ một lớp khác . Cái này gọi là kế thừa. Một lớp dẫn xuất có tất cả các thuộc tính công khai và được bảo vệ của lớp mà nó được dẫn xuất từ.

Tôi có thể mở rộng 2 lớp trong PHP không?

Các lớp, lớp trường hợp, đối tượng và đặc điểm tất cả chỉ có thể mở rộng không quá một lớp nhưng có thể mở rộng nhiều đặc điểm cùng một lúc.

Làm cách nào để gọi phương thức lớp mở rộng trong PHP?

lớp một { var $b; . } }

Một giao diện có thể mở rộng một lớp PHP không?

Các giao diện có thể được mở rộng giống như các lớp bằng cách sử dụng toán tử mở rộng . Ghi chú. Lớp triển khai giao diện phải khai báo tất cả các phương thức trong giao diện với chữ ký tương thích. Một lớp có thể triển khai nhiều giao diện khai báo một phương thức có cùng tên.

Chủ Đề