Polimorfizm w PHP wyjaśniony [z przykładami]

Opublikowany: 2021-02-19

Język programowania PHP jest zgodny z paradygmatem programowania obiektowego (OOP), wraz z innymi strukturami podstawowymi. Jedną z najważniejszych cech obiektów OOP jest polimorfizm. Ogólnie rzecz biorąc, polimorfizm pochodzi od greckich słów poli oznaczających wiele i morfizm oznaczający formy. Polimorfizm w obiektach obiektowych to koncepcja, która pozwala na tworzenie klas o różnych funkcjonalnościach w jednym interfejsie.

Generalnie jest to dwojakiego rodzaju: czas kompilacji (przeciążanie) i czas wykonywania (nadpisywanie), ale polimorfizm w PHP nie obsługuje przeciążania, czyli innymi słowy polimorfizmu czasu kompilacji. Najważniejszą zaletą polimorfizmu w PHP jest to, że nie musisz martwić się o szczegóły techniczne definiowania, który kod jest napisany w której klasie, ponieważ wszystkie będą używane w ten sam sposób.

Łatwym do zrozumienia przykładem zorientowanego obiektowo polimorfizmu PHP jest obszar o różnych kształtach geometrycznych. Istnieje wiele kształtów o różnych długościach, szerokościach, promieniach i innych parametrach, ale wszystkie figury będą miały obszar. Nie martw się, jeśli tego nie zrozumiałeś, ponieważ przyjrzymy się różnym przykładom polimorfizmu w PHP, aby lepiej zrozumieć koncepcję i sposób jej implementacji.

Spis treści

Jak zaimplementować polimorfizm w PHP?

Polimorfizm w PHP można zaimplementować za pomocą interfejsów lub klas abstrakcyjnych. Przyjrzymy się przykładom, aby wymusić to na dwa sposoby.

Przykład polimorfizmu w PHP do zaimplementowania w interfejsach

Interfejs można traktować jako plan dla wszystkich klas, które go rozszerzają. Są one podobne do klas z tylko jedną podstawową różnicą. Możesz deklarować i definiować nazwy metod i argumenty w interfejsach, ale nie możesz pisać kodu metody. Każda klasa implementująca interfejs zaimplementuje wszystkie jego metody. Składnia interfejsu to:

przykładowy interfejsInterfejs{

funkcja publiczna nazwametody();

}

Skoro znasz już interfejsy, przyjrzyjmy się, jak zaimplementować polimorfizm w PHP w interfejsie.

<?php

interfejs ShapeExmp{

funkcja publiczna calcArea();

}

class SquareExmp implementuje ShapeExmp{

prywatna strona $;

funkcja publiczna __construct($side){

$ta->strona = $strona;

}

funkcja publiczna calcArea(){

$obszar = $ta->strona * $ta->strona;

echo “Powierzchnia kwadratu = “.$obszar;

}

}

class RectangleExmp implementuje ShapeExmp{

prywatna $szerokość1;

prywatny $wysokość1;

funkcja publiczna __construct($szerokość1,$wysokość1){

$to->szerokość1 = $szerokość1;

$to->wysokość1 = $wysokość1;

}

funkcja publiczna calcArea(){

$obszar = $ta->szerokość1 * $ta->wysokość1;

echo “<br>Obszar prostokąta = “.$obszar;

}

}

class TriangleExmp implementuje ShapeExmp{

prywatne $cons1;

prywatna $szerokość1;

prywatne $wysokość1;

funkcja publiczna __construct($cons1,$width1,$height1){

$to->przeciw1 = $przeciw1;

$to->szerokość1 = $szerokość1;

$to->wysokość1 = $wysokość1;

}

funkcja publiczna calcArea(){

$obszar = $to->kons1 * $to->szerokość1 * $to->wysokość1;

echo “<br>Obszar trójkąta= “.$obszar;

}

}

$squ = nowy SquareExmp(8);

$squ->calcArea();

$rect = nowy RectangleExmp(10,15);

$rect->calcArea();

$tri = new TriangleExmp(0.5,10,12);

$tri->calcArea();

?>

Wyjście:

Powierzchnia kwadratu = 64

Pole prostokąta = 150

Pole trójkąta= 3

Jak widać w powyższym przykładzie, zaimplementowaliśmy polimorfizm w PHP za pomocą interfejsu. Skonstruowaliśmy i otrzymaliśmy powierzchnię trzech kształtów: kwadratu, trójkąta i prostokąta. Zaimplementowane klasy ciągle się zmieniają, podobnie jak argumenty, ale rezultatem jest zawsze obszar kształtu. Podobnie można również konstruować i obliczać obszar innych kształtów, takich jak koła, równoległoboki, elipsa i inne.

Przykład polimorfizmu w PHP do zaimplementowania w klasach abstrakcyjnych

Klasy abstrakcyjne w PHP są klasami nadrzędnymi, które mają zdefiniowane metody, ale nie kod. Definiuje się je za pomocą słowa kluczowego „abstrakcyjny”. Możesz ich używać tylko do dziedziczenia innych klas. Każda klasa abstrakcyjna ma jedną lub więcej metod abstrakcyjnych. Te klasy wymagają, aby ich klasy podrzędne wypełniały metody o tej samej nazwie. Dlatego różne klasy potomne używają metod w ten sam sposób, implementując w ten sposób polimorfizm w PHP. Zrozummy to lepiej na przykładzie polimorfizmu w PHP.

<?php

Klasa abstrakcyjna ShapeExmp{

abstrakcyjna funkcja chroniona calcArea();

}

class rectangleExmp rozszerza shapeExmp{

var $x,$y;

funkcja publiczna __construct($x , $y){

$to->x=$x;

$this->y=$y;

}

funkcja publiczna calcArea(){

$a=$this->x*$this->y;

zwróć $a;

}

}

class circleExmp rozszerza shapeExmp{

var $r;

funkcja publiczna __construct($r){

$to->r=$r;

}

funkcja publiczna calcArea(){

$pi=3,142;

$a=pow($to->r,2)*$pi;

zwróć $a;

}

}

class squareExmp rozszerza shapeExmp{

var $s;

funkcja publiczna __construct($s){

$to->s=$s;

}

funkcja publiczna calcArea(){

$a=$to->s * $to->s;

zwróć $a;

}

}

$rect=new rectangleExmp(8,10);

$area=$rect->calcArea();

echo “Obszar prostokąta= $obszar <br>”;

$circ=new circleExmp(5);

$area=$circ->calcArea();

echo „Obszar okręgu=$obszar<br>”;

$squ=new squareExmp(7);

$area=$squ->calcArea();

echo „Obszar kwadratowy= $obszar <br>”;

?>

Wyjście:

Obszar prostokąta = 80

Powierzchnia koła = 78,55

Powierzchnia kwadratu=49

Jak widać w powyższym przykładzie, najpierw stworzyliśmy abstrakcyjną klasę shapeExmp. Następnie zdefiniowaliśmy w nim funkcję abstrakcyjną calcArea(). Aby obliczyć obszar koła, prostokąta i kwadratu, wyprowadziliśmy te klasy z klasy abstrakcyjnej i użyliśmy funkcji abstrakcyjnej calcArea(). Podobnie możesz użyć klas abstrakcyjnych, aby zaimplementować polimorfizm w PHP i używać go w czasie wykonywania.

Zamówienie: projekty PHP na Github

Ucz się kursów oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

To rozwiałoby wszystkie twoje wątpliwości dotyczące polimorfizmu w PHP. Możesz spróbować używać go na różne sposoby za pomocą dowolnego kompilatora IDE lub kompilatora PHP online. PHP stało się popularnym językiem programowania. W PHP dostępnych jest wiele możliwości kariery . Nadaje się dobrze do interaktywnego tworzenia stron internetowych i jest niezbędny, aby nauczyć się zostać programistą pełnego stosu.

Jeśli chcesz kontynuować karierę programistyczną z pełnym stosem, możesz zapoznać się z programem Executive PG UpGrad i IIIT-B w ramach kursu rozwoju oprogramowania z pełnym pakietem. Kurs oferuje edukację w 16 różnych językach programowania i narzędziach. Dzięki 9+ zadaniom projektowym do ukończenia w trakcie kursu, upGrad zapewnia pewność miejsca. Oferuje ponad 500 godzin materiałów szkoleniowych, które pomogą Ci nauczyć się tworzyć solidne i skalowalne witryny i aplikacje.

Co to jest programowanie obiektowe?

Czym jest polimorfizm w programowaniu?

Polimorfizm to zdolność do posiadania więcej niż jednej formy. Na przykład pies ma 4 nogi, ale nogi są inne. To inna forma tego samego przedmiotu. W programowaniu komputerowym polimorfizm to zdolność do posiadania różnych wejść i posiadania jednego wyjścia. Na przykład możemy mieć klasę Osoba, Pracownik i Klient, a każda osoba ma inne dane wejściowe. Mają różne dane wejściowe, ponieważ każda osoba ma inne imię i nazwisko, adres i numer telefonu. Jednak dane wyjściowe są takie same dla wszystkich, czyli klasa Person.

Jak działają klasy i obiekty w programowaniu?

Klasy są podstawową jednostką programowania obiektowego (OOP). Są planami obiektów i jako takie służą do tworzenia obiektów i definiowania ich zachowania. Klasy można traktować jako uniwersalne elementy składowe OOP. Służą do tworzenia obiektów, które są specyficzne dla określonego zadania lub sytuacji. Jednak w przeciwieństwie do świata rzeczywistego, klasy można tworzyć niemal w dowolnym momencie i w dowolnej kolejności. Możesz utworzyć klasę, zanim zorientujesz się, w jaki sposób będzie ona używana — proces znany jako „anonimowe” tworzenie instancji klasy.