Polimorfismul în PHP explicat [cu exemple]

Publicat: 2021-02-19

Limbajul de programare PHP urmează o paradigmă de programare orientată pe obiecte (OOP), împreună cu alte structuri de bază. Una dintre cele mai semnificative caracteristici ale OOP-urilor este polimorfismul. În termeni generali, polimorfismul este derivat din cuvintele grecești poli care înseamnă mulți și morfism care înseamnă forme. Polimorfismul în POO este un concept care vă permite să creați clase cu funcționalități diferite într-o singură interfață.

În general, este de două tipuri: timp de compilare (supraîncărcare) și timp de rulare (overriding), dar polimorfismul în PHP nu acceptă supraîncărcare, sau cu alte cuvinte, polimorfismul în timp de compilare. Cel mai semnificativ beneficiu al polimorfismului în PHP este că nu trebuie să vă faceți griji cu privire la aspectele tehnice ale definirii codului scris în ce clasă, deoarece toate vor fi folosite în același mod.

Un exemplu ușor de înțeles de polimorfism PHP orientat pe obiecte este zona diferitelor forme geometrice. Există multe forme cu lungimi, lățimi, rază și alți parametri diferite, dar toate figurile vor avea o zonă. Nu vă faceți griji dacă nu l-ați înțeles, deoarece ne vom uita la diverse exemple de polimorfism în PHP pentru a înțelege mai bine conceptul și cum să-l implementăm.

Cuprins

Cum se implementează polimorfismul în PHP?

Polimorfismul în PHP poate fi implementat fie prin utilizarea de interfețe, fie prin clase abstracte. Vom analiza exemple pentru a o pune în aplicare în ambele moduri.

Exemplu de polimorfism în PHP de implementat în interfețe

Puteți considera interfața ca un model pentru toate clasele care o extind. Sunt similare cu clasele cu o singură diferență primară. Puteți declara și defini nume de metode și argumente în cadrul interfețelor, dar nu puteți scrie codul metodei. Orice clasă care implementează o interfață va implementa toate metodele acesteia. Sintaxa unei interfețe este:

exemplu de interfațăInterfață{

function public methodName();

}

Deoarece acum știți despre interfețe, să ne uităm la cum să implementăm polimorfismul în PHP într-o interfață.

<?php

interfață ShapeExmp{

funcția publică calcArea();

}

clasa SquareExmp implementează ShapeExmp{

privat $side;

funcția publică __construct($side){

$aceasta->parte = $partea;

}

funcția publică calcArea(){

$zona = $aceasta->partea * $aceasta->partea;

echo „Area pătratului = „.$area;

}

}

clasa RectangleExmp implementează ShapeExmp{

private $width1;

private $height1;

funcția publică __construct($lățime1,$înălțime1){

$aceasta->lățime1 = $lățime1;

$acest->înălțime1 = $înălțime1;

}

funcția publică calcArea(){

$zona = $aceasta->latime1 * $aceasta->inaltime1;

echo „<br>Aria dreptunghiului = „.$zonă;

}

}

clasa TriangleExmp implementează ShapeExmp{

private $cons1;

private $width1;

private $height1;

funcția publică __construct($cons1,$width1,$height1){

$acest->cons1 = $cons1;

$aceasta->lățime1 = $lățime1;

$acest->înălțime1 = $înălțime1;

}

funcția publică calcArea(){

$zona = $this->cons1 * $this->width1 * $this->height1;

echo „<br>Aria triunghiului= „.$area;

}

}

$squ = nou SquareExmp(8);

$squ->calcArea();

$rect = new RectangleExmp(10,15);

$rect->calcArea();

$tri = new TriangleExmp(0,5,10,12);

$tri->calcArea();

?>

Ieșire:

Aria pătratului = 64

Aria dreptunghiului = 150

Aria triunghiului = 3

După cum puteți vedea în exemplul de mai sus, am implementat polimorfismul în PHP printr-o interfață. Am construit și am obținut aria a trei forme: pătrat, triunghi și dreptunghi. Clasele implementate continuă să se schimbe, dar și argumentele, dar rezultatul este întotdeauna zona formei. În mod similar, puteți, de asemenea, să construiți și să calculați aria altor forme, cum ar fi cercuri, paralelograme, elipse și multe altele.

Exemplu de polimorfism în PHP de implementat în clase abstracte

Clasele abstracte în PHP sunt clasele părinte care au metode definite, dar nu și codul. Ele sunt definite cu ajutorul cuvântului cheie „abstract”. Le puteți folosi doar pentru a moșteni alte clase. Fiecare clasă abstractă are una sau mai multe metode abstracte. Aceste clase necesită ca clasele lor copii să completeze metodele cu același nume. Prin urmare, diferite clase copii folosesc metodele, în același mod, implementând astfel polimorfismul în PHP. Să înțelegem mai bine acest lucru cu un exemplu de polimorfism în PHP.

<?php

clasa abstract shapeExmp{

funcție abstractă protejată calcArea();

}

clasa rectangleExmp extinde shapeExmp{

var $x,$y;

funcția publică __construct($x , $y){

$acest->x=$x;

$acest->y=$y;

}

funcția publică calcArea(){

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

returnează $a;

}

}

clasa circleExmp extinde shapeExmp{

var $r;

funcția publică __construct($r){

$acest->r=$r;

}

funcția publică calcArea(){

$pi=3,142;

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

returnează $a;

}

}

clasa squareExmp extinde shapeExmp{

var $s;

funcție publică __construct($s){

$acest->s=$s;

}

funcția publică calcArea(){

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

returnează $a;

}

}

$rect=new rectangleExmp(8,10);

$zona=$rect->calcArea();

echo „Zona dreptunghiulară= $zonă <br>”;

$circ=cerc nouExmp(5);

$zona=$circ->calcArea();

echo „Zona cerc=$zonă<br>”;

$squ=new squareExmp(7);

$zonă=$squ->calcArea();

echo „Zona pătrată= $zonă <br>”;

?>

Ieșire:

Aria dreptunghiului = 80

Aria cercului=78,55

Suprafața pătrată=49

După cum puteți vedea în exemplul de mai sus, am creat mai întâi o clasă abstractă shapeExmp. Apoi am definit o funcție abstractă calcArea() în ea. Pentru a calcula suprafața cercului, dreptunghiului și pătratului, am derivat acele clase din clasa abstractă și am folosit funcția abstractă calcArea(). În mod similar, puteți folosi clasele abstracte pentru a implementa polimorfismul în PHP și a-l utiliza în timpul rulării.

Checkout: Proiecte PHP pe Github

Învață cursuri de software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Concluzie

Acest lucru v-ar fi curățat toate îndoielile cu privire la polimorfism în PHP. Puteți încerca să-l utilizați în diferite moduri cu ajutorul oricărui compilator IDE sau PHP online. PHP a crescut pentru a deveni un limbaj de programare predominant. Există numeroase oportunități de carieră disponibile în PHP . Este foarte potrivit pentru dezvoltarea web interactivă și esențial pentru a învăța să deveniți un dezvoltator full-stack.

Dacă doriți să urmați o carieră de dezvoltare full-stack, puteți consulta programul Executive PG de la upGrad și IIIT-B în cursul de dezvoltare software full-stack. Cursul vă oferă educație în 16 limbaje și instrumente de programare diferite. Cu peste 9 sarcini de proiect de finalizat în timpul cursului, upGrad vă oferă asigurare de plasare. Vă oferă peste 500 de ore de materiale de instruire pentru a vă ajuta să învățați cum să construiți site-uri web și aplicații robuste și scalabile.

Ce este programarea orientată pe obiecte?

Ce este polimorfismul în programare?

Polimorfismul este capacitatea de a avea mai multe forme. De exemplu, un câine are 4 picioare, dar picioarele sunt diferite. Aceasta este o formă diferită a aceluiași obiect. În programarea computerelor, polimorfismul este capacitatea de a avea intrări diferite și de a avea o singură ieșire. De exemplu, putem avea o clasă de Persoană, Lucrător și Client și fiecare individ are intrări diferite. Au intrări diferite, deoarece fiecare persoană are nume, adresă și număr de telefon diferite. Cu toate acestea, ieșirea este aceeași pentru toate, care este clasa Persoană.

Cum funcționează clasele și obiectele în programare?

Clasele sunt o unitate fundamentală a programarii orientate pe obiecte (OOP). Sunt planuri pentru obiecte și, ca atare, sunt folosite pentru a crea obiecte și pentru a defini comportamentul obiectelor. Clasele pot fi considerate ca fiind elementele universale ale OOP. Sunt folosite pentru a crea obiecte care sunt specifice pentru o anumită sarcină sau situație. Spre deosebire de lumea reală, totuși, clasele pot fi create aproape în orice moment și în orice ordine. Puteți crea o clasă chiar înainte de a ști cum va fi utilizată - un proces cunoscut sub numele de instanțiere „anonimă” a clasei.