Objektorientētā programmēšana ar PHP: pilni piemēri

Pēdējā atjaunošana: Maijā 28 2025
  • Objektorientēta programmēšana (OOP) ļauj PHP valodā izveidot modulārākas un atkārtoti lietojamas lietojumprogrammas.
  • OOP četri pīlāri ir iekapsulēšana, mantošana, polimorfisms un abstrakcija.
  • Iekapsulēšana aizsargā iekšējos datus un uzlabo koda uzturēšanas iespējas.
  • Polimorfisms ļauj vienādi apstrādāt dažādu klašu objektus.
Objektorientēta programmēšana ar PHP

Šajā visaptverošajā rakstā par objektorientēto programmēšanu ar PHP jūs atradīsiet praktiskus un detalizētus piemērus, kas palīdzēs izprast un pielietot pamatjēdzienus. Uzziniet, kā efektīvi izmantot objektorientētu programmēšanu PHP un uzlabojiet savas attīstības prasmes. Izpētiet piemērus un kļūstiet par OOP ekspertu ar PHP!

Ievads

Objektorientētā programmēšana (OOP) ir programmēšanas paradigma, ko plaši izmanto lietojumprogrammu un tīmekļa vietņu izstrādē. PHP kā programmēšanas valoda piedāvā arī pilnīgu atbalstu (https://informatecdigital.com/php-orientado-a-objetos-ejemplos-guia-completa/), ļaujot izstrādātājiem izveidot modulārāku, atkārtoti izmantojamu un uzturējamāku kodu. Šajā rakstā mēs aplūkosim objektorientētu programmēšanu ar PHP, izmantojot visaptverošus piemērus. Jūs apgūsiet OOP pamatjēdzienus un to pielietošanu savos PHP projektos. Gatavojieties pacelt savas programmēšanas prasmes nākamajā līmenī!

Kas ir objektorientētā programmēšana?

Objektorientētā programmēšana (OOP) ir programmatūras izstrādes pieeja, kuras pamatā ir ideja par interaktīviem "objektiem", kas iekapsulē datus un uzvedību. Tā vietā, lai koncentrētos uz funkcijām un procedūrām, kā tas ir strukturētā programmēšana, OOP koncentrējas uz mijiedarbību starp objektiem, kas attēlo reālās pasaules entītijas vai abstraktus jēdzienus. Šos objektus nosaka klases, kas darbojas kā veidnes šo objektu gadījumu izveidei.

Pilns piemērs: klases “Persona” izveide

Šeit ir pilns piemērs tam, kā PHP izveidot "Persona" klasi, izmantojot objektorientētu programmēšanu:

klases persona {
// Īpašības
publisks $nosaukums;
publisks $vecums;
// Konstruktors
publiskā funkcija __construct($vārds, $vecums) {
$šis->nosaukums = $nosaukums;
$šis->vecums = $vecums;
}
// Metodes
publiskā funkcija sveicināt() {
echo "Sveiki! Mani sauc {$this->name}, un man ir {$this->age} gadi.»;
}
}

// Izveidojiet klases "Person" instanci
$person = new Person("Juans", 25);

// Izsauciet metodi "sveiciens"
$person->greet();

Šajā piemērā mēs esam izveidojuši klasi ar nosaukumu “Persona” ar diviem rekvizītiem: “vārds” un “vecums”. Mēs esam arī definējuši konstruktoru, kas inicializē šos rekvizītus, kad tiek izveidots jauns klases gadījums. Klasei ir arī metode ar nosaukumu "sveiciens", kas parāda sveiciena ziņojumu, izmantojot rekvizītu vērtības.

Četri objektorientētas programmēšanas pīlāri

La Objektorientēta programmēšana Tas ir balstīts uz četriem pamatpīlāriem, kas nodrošina stabilu un efektīvu programmatūras izstrādi. Šie pīlāri ir:

1. Iekapsulēšana

Iekapsulēšana ir process, kurā tiek paslēptas objekta iekšējās detaļas un tiek atklāta tikai ierobežota saskarne mijiedarbībai ar to. Tas tiek panākts, definējot rekvizītus un metodes kā publiskus, privātus vai aizsargātus. Iekapsulēšana palīdz sakārtot kodu, aizsargāt sensitīvus datus un uzlabot koda lasāmību un apkopi.

Pilns piemērs: iekapsulēšana klasē “Bankas konts”.

Pieņemsim, ka mēs vēlamies modelēt bankas kontu, izmantojot objektorientētu programmēšanu. Šeit ir pilns piemērs, kā lietot iekapsulēšanu PHP klasē “Bankas konts”:

klase Bankas konts {
// Privātīpašumi
privātais $ atlikums;
// Konstruktors
publiskā funkcija __construct($initialbalance) {
$šis->atlikums = $sākotnējaisAtlikums;
}
// Publiska metode naudas iemaksai
publiskā funkcija depozīts($summa) {
$šis->atlikums + = $summa;
}
// Publiska metode naudas izņemšanai
publiskā funkcija izņemt($daudzums) {
ja ($summa <= $šis->atlikums) {
$šis->atlikums -= $summa;
} Vēl {
atbalss "Nepietiekams atlikums.";
}
}
// Publiska metode pašreizējā atlikuma iegūšanai
publiskā funkcija getBalance() {
atgriezt $šis->atlikums;
}
}

// Izveidojiet "BankAccount" klases instanci
$konts = new BankasKonts(1000);

// Veikt darbības
$konts->depozīts(500);
$konts->izņemt(200);

// Iegūt pašreizējo atlikumu
atbalss "Pašreizējais atlikums: " . $konts->getBalance();

Šajā piemērā mēs esam definējuši rekvizītu “līdzsvars” kā privātu, lai to paslēptu ārpus klases. Lai mijiedarbotos ar šo īpašumu, esam izveidojuši tādas publiskas metodes kā “depozīts”, “izņemt” un “getBalance”. Šīs metodes ļauj veikt operācijas ar bankas kontu, bet neļauj tieši piekļūt "bilances" īpašumam.

  Kas ir PHP?: pilnīga rokasgrāmata

2. Mantojums

Mantojums ir mehānisms, kas ļauj izveidot jaunu klasi, pamatojoties uz esošu klasi. Esošā klase ir pazīstama kā vecākklase vai virsklase, savukārt jaunā klase ir pazīstama kā pakārtotā klase vai apakšklase. Mantojums atvieglo koda atkārtotu izmantošanu un klašu hierarhiju izveidi, kur pakārtotās klases manto rekvizītus un metodes no vecākklases.

Pilns piemērs: Mantojums klasēs "Dzīvnieks" un "Suns"

Pieņemsim, ka mēs vēlamies modelēt dažāda veida dzīvniekus, izmantojot objektorientētu programmēšanu. Šeit ir pilns piemērs tam, kā lietot mantošanu PHP klasēs “Dzīvnieks” un “Suns”.

klase Dzīvnieks {
// Aizsargāts īpašums
aizsargāts $name;
// Konstruktors
publiskā funkcija __construct($name) {
$šis->nosaukums = $nosaukums;
}
// Publiska metode nosaukuma iegūšanai
publiskā funkcija getName() {
atgriezt $this->name;
}
// Publiska metode vispārīgas skaņas izdošanai
publiskā funkcija emitSound() {
atbalss "Dzīvnieks izdod skaņu.";
}
}

klase Suns paplašina Dzīvnieks {
// Publiska metode riešanas izstarošanai
publiskā funkcija emitSound() {
atbalss "Suns rej: Vau, vau!";
}
}

// Izveidojiet klases "Suns" eksemplāru
$suns = new Suns("Firulais");

// Iegūstiet suņa vārdu
atbalss "Suņa vārds:" . $suns->getNosaukums(). «
";

// Liec sunim izdot skaņu
$suns->atskaņotSkaņu();

Šajā piemērā esam izveidojuši klasi “Dzīvnieks”, kas darbojas kā vecāku klase, un “Suns” klasi, kas manto no klases “Dzīvnieks”. Klasei "Dzīvnieks" ir aizsargāts īpašums "name" un divas publiskas metodes "getName" un "playSound". Klase "Suns" ignorē "emitSound" metodi, lai izstarotu noteiktu mizu. Izveidojot klases “Suns” instanci, mēs mantojam rekvizītu “name” un metodes no klases “Dzīvnieks” un varam tām piekļūt.

3. Polimorfisms

Polimorfisms ļauj objektam izturēties dažādos veidos atkarībā no konteksta. Tas tiek panākts, izmantojot metodes ar vienādu nosaukumu dažādās klasēs, bet ar atšķirīgām implementācijām. Polimorfisms veicina koda elastību un paplašināmību, ļaujot dažādu klašu objektus apstrādāt vienādi.

Pilns piemērs: polimorfisms ar klasēm "Figūra" un "Aplis"/"Taisnstūris"

Pieņemsim, ka mēs vēlamies modelēt dažādas ģeometriskas figūras, izmantojot objektorientētu programmēšanu. Tālāk ir sniegts pilnīgs piemērs, kā izmantot polimorfismu PHP klasēs "Forma", "Aplis" un "Taisnstūris".

abstrakta klase Attēls {
// Abstrakta metode laukuma aprēķināšanai
abstrakta publiskā funkcija calculateArea();
}

klase Aplis paplašina attēlu {
privātais $radio;

// Konstruktors
publiskā funkcija __construct($radio) {
$šis->radio = $radio;
}

// Abstraktās metodes ieviešana
publiskā funkcija aprēķināt laukumu() ​​{
atgriezties pi() * pow($this->radio, 2);
}
}

klase Taisnstūris paplašina attēlu {
privāta $bāze;
privāts $augstums;

// Konstruktors
publiskā funkcija __construct($base, $height) {
$šis->bāze = $bāze;
$šis->augstums = $augstums;
}

// Abstraktās metodes ieviešana
publiskā funkcija aprēķināt laukumu() ​​{
atgriezt $this->base * $this->height;
}
}

// Izveidojiet "Apļa" un "Taisnstūra" klašu instances
$aplis = new Aplis(5);
$taisnstūris = new Taisnstūris(4, 6);

// Aprēķiniet laukumus, izmantojot polimorfismu
atbalss "Apļa laukums: " . $aplis->aprēķinātPlatību() . «
";
atbalss "Taisnstūra laukums: " . $taisnstūris->aprēķinātPlatību();

Šajā piemērā mēs esam izveidojuši abstraktu klasi “Figure” ar abstraktu metodi “calculateArea”. Tālāk mēs izveidojām divas klases “Aplis” un “Taisnstūris”, kas mantotas no klases “Shape” un nodrošina konkrētas metodes “calculateArea” realizāciju. Instantiējot Circle un Taisnstūra klases un izsaucot CalculateArea metodi, mēs varam iegūt katras ģeometriskās figūras konkrēto laukumu.

4. Abstrakcija

Abstrakcija ir process, kurā tiek identificētas objekta būtiskās īpašības un izveidots šī objekta vienkāršots attēlojums klases formā. Abstrakcija palīdz pārvaldīt sarežģītību, slēpjot nevajadzīgas detaļas un koncentrējoties uz attiecīgajiem aspektiem. Abstraktās klases un saskarnes ir izplatīti rīki, ko izmanto, lai panāktu abstrakciju objektorientētā programmēšanā.

  Kā apgūt objektorientētu PHP

Pilnīgi objektorientētas programmēšanas piemēri ar PHP

Zemāk mēs piedāvājam virkni pilnīgu objektu orientētas programmēšanas piemēru ar PHP. Šie piemēri aptver dažādus jēdzienus un palīdzēs jums saprast un lietot OOP savos PHP projektos.

1. Klases “Produkts” izveide ar īpašībām un metodēm

klases produkts {
privāts $nosaukums;
privāta $cena;

publiskā funkcija __construct($nosaukums, $cena) {
$šis->nosaukums = $nosaukums;
$šis->cena = $cena;
}

publiskā funkcija getName() {
atgriezt $this->name;
}

publiskā funkcija getPrice() {
atgriezt $this->cena;
}

publiskā funkcija showDetails() {
atbalss "Vārds: " . $this->name . «
";
atbalss "Cena: $". $šis->cena . «
";
}
}

$produkts = jauns produkts("T-krekls", 29.99);
$produkts->showDetails();

Šajā piemērā mēs esam izveidojuši klasi “Produkts” ar privātiem rekvizītiem “name” un “price”. Konstruktors ir atbildīgs par šo rekvizītu inicializēšanu, kad tiek izveidots klases gadījums. Klasei ir arī metodes, kā iegūt produkta nosaukumu un cenu, kā arī parādīt pilnu informāciju par produktu.

2. Mantojums starp klasēm "Transportlīdzekļi" un "Automobiļi"

klases transportlīdzeklis {
aizsargāts $zīmols;

publiskā funkcija __construct($mark) {
$šis->zīmols = $zīmols;
}

publiskā funkcija getBrand() {
atgriezt $šis->zīmols;
}

publiskā funkcija disks() {
atbalss "Transportlīdzekļa vadīšana...";
}
}

klase Automobile paplašina Vehicle {
privāts $modelis;

publiskā funkcija __construct($brand, $model) {
vecāk::__konstruēt($zīmols);
$šis->modelis = $modelis;
}

publiskā funkcija getModel() {
atgriezt $šis->modelis;
}

publiskā funkcija showDetails() {
atbalss "Marks: " . $šis->zīmols . «
";
atbalss "Modelis: " . $šis->modelis . «
";
}
}

$automobile = jauna automašīna ("Toyota", "Corolla");
$automobilis->showDetails();
$auto->braukt();

Šajā piemērā mēs esam izveidojuši klasi “Transportlīdzeklis” ar aizsargātu rekvizītu “marka” un metodēm, kā iegūt marku un vadīt transportlīdzekli. Tālāk mēs izveidojām klasi “Auto”, kas manto no “Transportlīdzekļa” klases un pievieno privātīpašuma “modeli” un metodi, lai parādītu visas automašīnas detaļas. Izveidojot klases “Automašīna” instanci, mēs varam piekļūt gan vecākklases metodēm, gan specifiskajām bērnklases metodēm.

3. Polimorfisma pielietošana klasēs “Dzīvnieks” un “Kaķis”.

abstrakta klase Dzīvnieks {
aizsargāts $name;

publiskā funkcija __construct($name) {
$šis->nosaukums = $nosaukums;
}

abstrakta publiskā funkcija makeSound();
}

klase Suns paplašina Dzīvnieks {
publiskā funkcija makeSound() {
atbalss "Suns rej: Vau, vau!";
}
}

klase Kaķis paplašina Dzīvnieks {
publiskā funkcija makeSound() {
atbalss «Kaķis ņaud: Ņau!»;
}
}

$suns = new Suns("Firulais");
$kaķis = new Kaķis("Garfield");

$suns->izveidot skaņu();
$kaķis->izveidot skaņu();

Šajā piemērā mēs esam izveidojuši abstraktu klasi “Animal” ar abstraktu metodi “makeSound”. Pēc tam mēs izveidojām klases “Suns” un “Kaķis”, kas ir mantotas no klases “Dzīvnieks” un nodrošina īpašas “makeSound” metodes realizācijas. Izsaucot metodi “makeSound” klases “Suns” un “Kaķis” gadījumos, mēs varam redzēt, kā katrs dzīvnieks rada atšķirīgu skaņu.

4. Interfeisu izmantošana klasēs “Maksājums” un “PayPal”.

saskarnes Maksājums {
publiskās funkcijas processPayment($summa);
}

klase PayPal īsteno maksājumu {
publiskā funkcija processPayment($amount) {
echo "Apstrādā maksājumu $ apmērā". $daudzums. »izmantojot PayPal…»;
}
}

klase Kredītkarte īsteno Maksājumu {
publiskā funkcija processPayment($amount) {
echo "Apstrādā maksājumu $ apmērā". $daudzums. »ar kredītkarti…»;
}
}

$paypal = new PayPal();
$karte = new Kredītkarte();

$paypal->processMaksājums(100);
$karte->processMaksājums(50);

Šajā piemērā mēs esam izveidojuši saskarni “Maksājums” ar metodi “processPayment”. Tālāk mēs izveidojām klases “PayPal” un “CreditCard”, kas ievieš saskarni “Maksājums” un nodrošina specifiskas “processPayment” metodes implementācijas. Šo klašu gadījumos izsaucot metodi “processPayment”, mēs varam apstrādāt maksājumu, izmantojot dažādus maksājuma veidus.

Šie piemēri sniedz priekšstatu par to, kā PHP var izmantot objektorientētu programmēšanu. Izpētiet citus piemērus un praktizējiet savas objektorientētās programmēšanas prasmes, izmantojot PHP.

Bieži uzdotie jautājumi

Kādas ir objektorientētās programmēšanas priekšrocības ar PHP?

Objektorientētā programmēšana ar PHP piedāvā vairākas priekšrocības, piemēram, koda atkārtotu izmantošanu, modularitāti, koda lasāmību un apkopi, kā arī iespēju precīzāk modelēt problēmas, izmantojot objektus un to mijiedarbību. Turklāt OOP nodrošina lielāku elastību un paplašināšanu lietojumprogrammu un vietņu izstrādē.

Vai ir jāapgūst objektorientētā programmēšana, lai programmētu PHP?

Lai programmētu PHP valodā, nav obligāti jāapgūst objektorientētā programmēšana, jo PHP atbalsta arī strukturētu programmēšanu. Tomēr objektorientētā programmēšana tiek plaši izmantota PHP lietojumprogrammu un vietņu izstrādē, un tās apguve pavērs durvis uz modulārāku, atkārtoti lietojamu un uzturējamu kodu.

  Labāko programmēšanas IDE galīgais ceļvedis: salīdzinājums un padomi

Kāda ir atšķirība starp klasi un objektu objektorientētā programmēšanā?

Objektorientētajā programmēšanā klase ir veidne vai veidne, kas nosaka kopīgās īpašības un metodes, kas būs no tās izveidotajiem objektiem. No otras puses, objekts ir konkrēta klases eksemplārs, kam ir savas īpašības un kas var izpildīt klasē definētās metodes.

Kad vajadzētu izmantot mantošanu objektorientētā programmēšanā ar PHP?

Mantojums tiek izmantots objektorientētā programmēšanā, ja vēlaties izveidot jaunu klasi, pamatojoties uz esošu klasi, lai mantotu tās īpašības un metodes un pievienotu papildu funkcionalitāti vai mainītu esošo uzvedību. Mantojums ļauj atkārtoti izmantot kodu un izveidot klašu hierarhijas, padarot kodu vieglāk organizējamu un uzturējamu.

Kāda ir atšķirība starp abstraktu klasi un interfeisu PHP?

Abstraktā klase ir klase, kuru nevar tieši izveidot, bet tā tiek izmantota kā pamats apakšklases izveidei. Tas var saturēt metodes ar konkrētu ieviešanu un abstraktas metodes, kas jāīsteno apakšklasēm. No otras puses, saskarne ir abstraktu metožu kopums, kas jāīsteno jebkurai klasei, kas to ievieš. Klase var ieviest vairākas saskarnes, bet var mantot tikai no vienas abstraktas klases.

Kāda ir iekapsulēšanas nozīme objektorientētā programmēšanā?

Iekapsulēšana ir būtiska objektorientētā programmēšanai, jo tā ļauj paslēpt objekta iekšējās detaļas un atklāt tikai ierobežotu saskarni mijiedarbībai ar to. Tas palīdz aizsargāt sensitīvus datus, nodrošināt objekta stāvokļa konsekvenci un uzlabot koda lasāmību un apkopi. Iekapsulēšana arī atvieglo koda attīstību, jo objekta iekšējās izmaiņas neietekmē citus objektus, kas ar to mijiedarbojas.

Secinājums

Objektorientētā programmēšana ar PHP ir spēcīga un elastīga pieeja lietojumprogrammu un vietņu izstrādei. Izmantojot klases, objektus, mantojumu, polimorfismu un abstrakciju, varat izveidot modulāru, atkārtoti lietojamu un uzturējamu kodu. Šajā rakstā mēs esam izpētījuši pilnīgus objektorientētas programmēšanas piemērus ar PHP, aptverot pamatjēdzienus un parādot to praktisko pielietojumu. Mēs ceram, ka šie piemēri ir palīdzējuši jums saprast un izmantot objektorientētu programmēšanu savos PHP projektos!

Objektorientēta PHP
saistīto rakstu:
Kā apgūt objektorientētu PHP