Hướng dẫn polymorphism php - đa hình php

Cho phép viết mã ít

Hướng dẫn polymorphism php - đa hình php

Vậy công việc mơ ước của bạn là một nhà phát triển phần mềm là gì? Dù nó có thể là gì, lập trình hướng đối tượng AKA OOP là điều bạn chắc chắn muốn thêm vào bộ kỹ năng của mình. Đó là tất cả về việc viết ứng dụng về các khái niệm trong thế giới thực như cà phê, pizza hoặc mèo - nhiều hơn một cách để làm mọi việc và tiếp cận các vấn đề thay vì sử dụng một thư viện cụ thể hoặc what is your dream job as a software developer? Whatever it may be, object-oriented programming aka OOP is something you definitely want to add to your skill set. It is all about writing apps in terms of real world concepts like coffee, pizza or cat — more of a way of doing things and approaching problems rather than using a particular library or…

Khi nói đến lập trình theo định hướng đối tượng, tính đ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 để làm quen hoàn toàn nhưng nếu bạn tương đối mới với OOP, chỉ có từ đa hình có thể khiến bạn sợ hãi một chút nhưng sự thật là đa hình chỉ là Một từ dài cho một khái niệm rất đơn giản và tôi tin rằng bạn sẽ lấy cách nó hoạt động sau khi kết thúc hướng dẫn tối thiểu này vì hướng dẫn này sẽ mô tả khái niệm chung về đa hình và cách bạn có thể dễ dàng áp dụng nó trong PHP. Đủ của cuộc nói chuyện, tính đa hình là gì?what is Polymorphism?

Đầu tiên, nó có nguồn gốc từ các từ Hy Lạp poly (có nghĩa là nhiều) và hình thái (có nghĩa là các 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 có các chức năng khác nhau thực hiện hoặc chia sẻ một giao diện chung.

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

Đa hình trong PHP được thực hiện bằng cách sử dụng mẫu giao diện. Hãy suy 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 pattern. Think about interface as the skeleton or blueprint for your class which implements it.

interface shapesInterface{

}

Mã trên có một giao diện có tên ShapesInterface.

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ã nhưng chỉ khai báo phương thức và tuyên bố này chỉ có thể hoạt động với phạm vi công cộng như được thấy dưới đây:public scope as seen below:

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 là nội dung của các phương thức. Bất kỳ lớp nào thực hiện giao diện phải thực hiện 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:must implement all methods defined by the interface. Below are the main points of Interface:

  1. Một giao diện được xác định để cung cấp một tên chức năng chung cho các lớp người thực hiện.
  2. Các lớp thực hiện khác nhau có thể thực hiện các giao diện đó theo yêu cầu của họ.
  3. Bạn có thể nói, giao diện là bộ xương được thực hiện bởi các nhà phát triển.
// 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 hình chữ nhật đang triển khai hình dạng mà chúng ta đã tạo trước đó và nó có cùng tên phương thức phổ biến với ShapesInterface (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 giao diện, một lớp phải gọi tất cả các phương thức trong giao diện, việc triển khai như ở trên, khi việc triển khai lớp đầu tiên được hiển thị, sẽ xảy ra lỗi nghiêm trọng vì nó không thực hiện tất cả các phương thức về hình dạng.

2. Các lớp thực hiện khác nhau có thể thực hiện các giao diện đó theo yêu cầu của họ.

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

Như đã thấy ở trên, trong khi hình chữ nhật đang triển khai ShapesInterface, các lớp khác cũng có thể làm giống như lớp đa giác ở 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 trong đó tính đa hình có thể chứng minh thực sự hữu ích trong PHP là khi bạn bảo vệ một chức năng bằng cách truyền trong một 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 thông 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 chức năng của chúng ta ở trên, tất cả những gì chúng ta phải làm là quấn tất cả chúng trong giao diện và chỉ gọi giao diện Tên như đã thấy dưới đây:

//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.

Tôi hy vọng bây giờ bạn hiểu tính đa hình là gì và làm thế nào bạn có thể áp dụng nó trong PHP. Chúc một ngày tốt lành!