Lớp hình chữ nhật php

Khi nói đến Lập trình hướng đối tượng, Đa hình thực sự là một công cụ tuyệt vời và mạnh mẽ mà bạn cần phải làm quen hoàn toàn nhưng nếu bạn còn khá mới với OOP, chỉ riêng từ Đa hình có thể khiến bạn hơi sợ nhưng sự thật là Đa hình chỉ là . Nói đủ rồi, Đa hình là gì?

Đầu tiên, nó bắt nguồn từ các từ Hy Lạp Poly (có nghĩa là nhiều) và morph (có nghĩa là hình thức)

Đa hình đơn giản là một mẫu thiết kế OOP cho phép nhiều lớp với nhiều chức năng khác nhau triển khai hoặc chia sẻ một Giao diện chung

Tính thẩm mỹ của tính đa hình là mã làm việc với các lớp khác nhau không cần biết nó đang sử dụng lớp nào vì tất cả chúng đều được sử dụng theo cùng một cách

Tính đa hình trong PHP được triển khai bằng cách sử dụng mẫu giao diện. Hãy nghĩ về giao diện như bộ xương hoặc bản thiết kế cho lớp của bạn để thực hiện nó

interface shapesInterface{

}

Đoạn mã trên có một giao diện có tên là shapeInterface

Một giao diện tương tự như một lớp ngoại trừ việc nó không thể chứa mã mà chỉ có khai báo phương thức và khai báo này chỉ có thể hoạt động với phạm vi công khai như bên dưới

interface shapesInterface{
public function getArea();
}

Một giao diện có thể xác định tên phương thức và đối số, nhưng không phải nội dung của phương thức. Bất kỳ lớp nào triển khai giao diện phải triển khai tất cả các phương thức được xác định bởi giao diện. Dưới đây là những điểm chính của Giao diện

  1. Một giao diện được định nghĩa để cung cấp một tên hàm chung cho các lớp triển khai
  2. Các lớp triển khai khác nhau có thể triển khai các giao diện đó theo yêu cầu của chúng
  3. Có thể nói, giao diện là bộ xương được các nhà phát triển triển khai
// Below is an example of what point 1 denotes:class Rectangle implements shapesInterface{  public function getArea(){    return "Rectangle Area";  }}

Như chúng ta có thể thấy từ ví dụ trên, lớp Rectangle đang cài đặt shapeInterface mà chúng ta đã tạo trước đó và nó có cùng tên phương thức chung với shapeInterface (getArea) ngoại trừ phương thức giao diện không có mã trong đó

//First things first, define the interfaceinterface shapesInterface{    //First method    public function getArea();   //Second method

public function totalWidthSize();

}/*
|Now that we've created our interface, Take a good look at the differences between the two classes below
*/
//Invalid and will output a fatal error
class Rectangle implements shapesInterface{
public function getArea(){ }}//Valid and will work just fine
class Rectangle implements shapesInterface{
public function getArea(){}public function totalWidthSize(){}}

Khi triển khai một giao diện, một lớp phải gọi tất cả các phương thức trong giao diện mà nó đang triển khai như đã thấy ở trên, khi triển khai lớp đầu tiên được hiển thị, một lỗi nghiêm trọng sẽ xảy ra do nó không triển khai tất cả các phương thức trong shapeInterface

2. Các lớp triển khai khác nhau có thể triển khai các giao diện đó theo yêu cầu của chúng

class Polygon implements shapesInterface{public function getArea(){return "Polygon Area";}public function totalWidthSize(){return "Total width Size";}}

Như đã thấy ở trên, trong khi Rectangle đang triển khai shapeInterface, các lớp khác cũng có thể thực hiện tương tự như lớp Polygon ở trên nhưng tất cả chúng đều phải tuân theo kiến ​​trúc giao diện

Một trường hợp khác mà tính đa hình có thể thực sự hữu ích trong PHP là khi bạn bảo vệ một hàm bằng cách truyền tên lớp trong khi truyền một đối tượng. Chúng ta hãy xem ví dụ dưới đây

/*
|Create a function that lets you calculate the area of a rectangle Using the Rectangle class above
|Using the class name Rectangle will only allow class Rectangle object to be passed which is really a security measure so nobody passes any unwanted class object into the function
*/
function calculateRectangle(Rectangle $object){ // return $object->getArea();}

Ví dụ trên chỉ là một điều bình thường trong OOP, nhưng nếu chúng ta muốn các lớp khác ngoài Hình chữ nhật được truyền dưới dạng tham số cho hàm tính toánRectangle ở ​​trên, tất cả những gì chúng ta phải làm là bọc tất cả chúng trong một giao diện và chỉ cần gọi giao diện

//PHP will clearly understand that this is an interface and we want only the class in this interface to be passed into this method belowfunction calculateRectangle(shapesInterface$object){// return $object->getArea();}

Tóm lại, Đa hình mô tả một mẫu trong Lập trình hướng đối tượng trong đó một lớp có chức năng khác nhau trong khi chia sẻ một giao diện chung