- Objektinis programavimas (OOP) leidžia kurti modulines ir daugkartinio naudojimo programas PHP kalba.
- Keturi OOP ramsčiai yra inkapsuliacija, paveldėjimas, polimorfizmas ir abstrakcija.
- Inkapsuliavimas apsaugo vidinius duomenis ir pagerina kodo priežiūrą.
- Polimorfizmas leidžia vienodai traktuoti skirtingų klasių objektus.
Šiame išsamiame straipsnyje apie objektinį programavimą naudojant PHP rasite praktinių ir išsamių pavyzdžių, kurie padės suprasti ir pritaikyti pagrindines sąvokas. Išmokite efektyviai naudoti objektinį programavimą PHP ir patobulinkite savo tobulėjimo įgūdžius. Naršykite pavyzdžius ir tapkite OOP ekspertu naudodami PHP!
Įvadas
Objektinis programavimas (OOP) yra programavimo paradigma, plačiai naudojama kuriant programas ir svetaines. PHP, kaip programavimo kalba, taip pat siūlo visišką palaikymą (https://informatecdigital.com/php-orientado-a-objetos-ejemplos-guia-completa/), leisdama kūrėjams kurti modulinį, pakartotinai naudojamą ir lengvai prižiūrimą kodą. Šiame straipsnyje mes nagrinėsime objektinį programavimą su PHP, pateikdami išsamius pavyzdžius. Sužinosite pagrindines OOP sąvokas ir kaip jas pritaikyti savo PHP projektuose. Pasiruoškite pakelti savo programavimo įgūdžius į kitą lygį!
Kas yra objektinis programavimas?
Objektinis programavimas (OOP) yra programinės įrangos kūrimo metodas, pagrįstas interaktyvių „objektų“, apimančių duomenis ir elgesį, idėja. Užuot sutelkęs dėmesį į funkcijas ir procedūras, kaip struktūrizuotame programavime, OOP sutelkia dėmesį į sąveiką tarp objektų, vaizduojančių realaus pasaulio esybes arba abstrakčias sąvokas. Šiuos objektus apibrėžia klasės, kurios veikia kaip šablonai kuriant tų objektų egzempliorius.
Visas pavyzdys: „Asmens“ klasės sukūrimas
Čia yra pilnas pavyzdys, kaip sukurti „Asmens“ klasę PHP naudojant objektinį programavimą:
klasės asmuo {
// Ypatybės
viešas $pavadinimas;
viešas $amžius;
// Konstruktorius
viešoji funkcija __construct($vardas, $amžius) {
$šis->pavadinimas = $pavadinimas;
$this->amžius = $amžius;
}
// Metodai
viešoji funkcija pasveikinti() {
echo „Sveiki! Mano vardas {$this->name} ir man {$this->age} metai.“;
}
}
// Sukurkite „Person“ klasės egzempliorių
$asmuo = new Asmuo("Juan", 25);
// Iškvieskite „pasveikinimo“ metodą
$asmuo->pasveikink();
Šiame pavyzdyje sukūrėme klasę pavadinimu „Asmuo“ su dviem savybėmis: „vardas“ ir „amžius“. Taip pat apibrėžėme konstruktorių, kuris inicijuotų šias savybes, kai sukuriamas naujas klasės egzempliorius. Klasėje taip pat yra metodas, vadinamas "sveikinimu", kuris rodo sveikinimo pranešimą, naudodamas ypatybių reikšmes.
Keturi objektinio programavimo ramsčiai
Objektinis programavimas grindžiamas keturiais pagrindiniais ramsčiais, kurie leidžia kurti patikimą ir efektyvų programinės įrangos kūrimą. Šie ramsčiai yra:
1. Inkapsuliavimas
Inkapsuliavimas yra vidinių objekto detalių slėpimo procesas ir atskleidžiama tik ribota sąveikos su juo sąsaja. Tai pasiekiama apibrėžiant savybes ir metodus kaip viešas, privačias arba saugomas. Inkapsuliavimas padeda sutvarkyti kodą, apsaugoti neskelbtinus duomenis ir pagerinti kodo skaitomumą bei priežiūrą.
Visas pavyzdys: Inkapsuliavimas į „Banko sąskaitos“ klasę
Tarkime, kad norime modeliuoti banko sąskaitą naudodami objektinį programavimą. Čia yra išsamus pavyzdys, kaip pritaikyti inkapsuliaciją „Banko sąskaitos“ klasėje PHP:
klasės banko sąskaita {
// Privati valda
privatus $likutis;
// Konstruktorius
viešoji funkcija __construct($initialbalance) {
$this->balansas = $pradinisLikutis;
}
// Viešas pinigų įnešimo būdas
viešoji funkcija įmoka($suma) {
$tai->likutis + = $suma;
}
// Viešas būdas išsiimti pinigus
viešoji funkcija atšaukti($kiekis) {
jei ($suma <= $šis->likutis) {
$tai->likutis -= $suma;
} Else {
echo „Nepakankamas balansas.“;
}
}
// Viešas metodas dabartiniam likučiui gauti
viešoji funkcija getBalans() {
grąžinti $this->balansas;
}
}
// Sukurkite „BankAccount“ klasės egzempliorių
$sąskaita = new BankoSąskaita(1000);
// Atlikti operacijas
$sąskaita->įmoka(500);
$sąskaita->išimti(200);
// Gaukite dabartinį likutį
echo "Dabartinis likutis: " . $sąskaita->getBalance();
Šiame pavyzdyje „balanso“ nuosavybę apibrėžėme kaip privačią, kad paslėptume ją nuo klasės ribų. Norėdami sąveikauti su šia nuosavybe, sukūrėme viešus metodus, pvz., „įnešti“, „išsiimti“ ir „getBalance“. Šie metodai leidžia atlikti operacijas banko sąskaitoje, tačiau neleidžia tiesiogiai pasiekti „balanso“ nuosavybės.
2. Paveldėjimas
Paveldėjimas yra mechanizmas, leidžiantis sukurti naują klasę pagal esamą klasę. Esama klasė yra žinoma kaip pagrindinė klasė arba superklasė, o nauja klasė yra žinoma kaip antrinė klasė arba poklasis. Paveldėjimas palengvina pakartotinį kodo naudojimą ir klasių hierarchijų kūrimą, kai antrinės klasės paveldi savybes ir metodus iš pirminės klasės.
Visas pavyzdys: paveldėjimas klasėse „Gyvūnas“ ir „Šuo“
Tarkime, mes norime modeliuoti skirtingų tipų gyvūnus naudodami objektinį programavimą. Čia yra išsamus pavyzdys, kaip pritaikyti paveldėjimą PHP klasėse „Gyvūnai“ ir „Šuo“:
klasės gyvūnas {
// Saugoma nuosavybė
apsaugotas $name;
// Konstruktorius
viešoji funkcija __construct($name) {
$šis->pavadinimas = $pavadinimas;
}
// Viešas metodas vardui gauti
viešoji funkcija getName() {
return $this->pavadinimas;
}
// Viešas metodas generiniam garsui skleisti
viešoji funkcija emitSound() {
echo „Gyvūnas skleidžia garsą.“;
}
}
klasė Šuo pratęsia Gyvūnas {
// Viešas lojimo skleidimo metodas
viešoji funkcija emitSound() {
aidas „Šuo loja: Au au!“;
}
}
// Sukurkite „Šuo“ klasės egzempliorių
$šuo = new Šuo("Firulais");
// Sužinokite šuns vardą
echo „Šuns vardas:“ . $šuo->getVardas(). «
";
// Sukurkite šuns garsą
$šuo->grotiGarsą();
Šiame pavyzdyje sukūrėme klasę „Gyvūnai“, kuri veikia kaip pagrindinė klasė, ir „Šuo“ klasę, kuri paveldi iš „Gyvūnų“ klasės. „Animal“ klasė turi saugomą nuosavybę „name“ ir du viešuosius metodus „getName“ ir „playSound“. „Šuo“ klasė nepaiso „emitSound“ metodo, kad skleistų konkrečią žievę. Sukūrę „Šuo“ klasės egzempliorių, paveldime „pavadinimo“ ypatybę ir metodus iš „Gyvūno“ klasės ir galime juos pasiekti.
3. Polimorfizmas
Polimorfizmas leidžia objektui elgtis skirtingai, priklausomai nuo konteksto. Tai pasiekiama naudojant metodus tuo pačiu pavadinimu skirtingose klasėse, bet skirtingais įgyvendinimais. Polimorfizmas skatina kodo lankstumą ir išplečiamumą, leisdamas vienodai traktuoti skirtingų klasių objektus.
Visas pavyzdys: polimorfizmas su klasėmis „figūra“ ir „apskritimas“ / „stačiakampis“
Tarkime, mes norime modeliuoti skirtingas geometrines figūras naudodami objektinį programavimą. Žemiau pateikiamas išsamus pavyzdys, kaip taikyti polimorfizmą PHP klasėse „Forma“, „Apskritimas“ ir „Stačiakampis“:
abstrakti klasė Paveikslas {
// Abstraktus metodas plotui apskaičiuoti
abstrakti viešoji funkcija calculateArea();
}
klasė Apskritimas išplečia figūrą {
privatus radijas;
// Konstruktorius
viešoji funkcija __construct($radio) {
$this->radijas = $radijas;
}
// Abstraktaus metodo įgyvendinimas
viešoji funkcija apskaičiuoti plotą() {
return pi() * pow($this->radijo_vardas, 2);
}
}
klasė Stačiakampis išplečia figūrą {
privati $bazė;
privatus $aukštis;
// Konstruktorius
viešoji funkcija __construct($bazė, $aukštis) {
$tai->bazė = $bazė;
$tai->aukštis = $aukštis;
}
// Abstraktaus metodo įgyvendinimas
viešoji funkcija apskaičiuoti plotą() {
return $this->bazė * $this->aukštis;
}
}
// Sukurkite „Circle“ ir „Rectangle“ klasių egzempliorius
$apskritimas = new Apskritimas(5);
$stačiakampis = new Stačiakampis(4, 6);
// Apskaičiuokite plotus naudodami polimorfizmą
echo "Apskritimo plotas: " . $apskritimas->skaičiuotiPlotą() . «
";
echo "Stačiakampio plotas: " . $stačiakampis->apskaičiuotiPlotą();
Šiame pavyzdyje mes sukūrėme abstrakčią klasę „Paveikslėlis“ su abstrakčiu metodu „calculateArea“. Tada sukūrėme dvi klases „Apskritimas“ ir „Stačiakampis“, kurios paveldėjo iš „Shape“ klasės ir pateikia konkrečius metodo „calculateArea“ įgyvendinimus. Sukūrę apskritimo ir stačiakampio klases ir iškvietę CalculateArea metodą, galime gauti konkretų kiekvienos geometrinės figūros plotą.
4. Abstrakcija
Abstrakcija – tai esminių objekto charakteristikų nustatymo ir supaprastinto to objekto vaizdavimo klasės forma kūrimo procesas. Abstrakcija padeda valdyti sudėtingumą slepiant nereikalingas detales ir sutelkiant dėmesį į atitinkamus aspektus. Abstrakčios klasės ir sąsajos yra įprasti įrankiai, naudojami objektinio programavimo abstrakcijai pasiekti.
Išsamūs objektinio programavimo su PHP pavyzdžiai
Žemiau pateikiame pilnų objektinio programavimo su PHP pavyzdžių seriją. Šie pavyzdžiai apima skirtingas sąvokas ir padės suprasti ir pritaikyti OOP savo PHP projektuose.
1. „Produkto“ klasės su savybėmis ir metodais sukūrimas
klasės produktas {
privatus $vardas;
privati kaina;
viešoji funkcija __construct($pavadinimas, $kaina) {
$šis->pavadinimas = $pavadinimas;
$tai->kaina = $kaina;
}
viešoji funkcija getName() {
return $this->pavadinimas;
}
viešoji funkcija getPrice() {
grąžinti $this->kaina;
}
viešoji funkcija showDetails() {
echo „Vardas: “ . $this->name . «
";
echo „Kaina: $“. $tai->kaina . «
";
}
}
$produktas = naujas Produktas("Marškinėliai", 29.99);
$produktas->showDetails();
Šiame pavyzdyje sukūrėme klasę „Produktas“ su privačiomis savybėmis „pavadinimas“ ir „kaina“. Konstruktorius yra atsakingas už šių savybių inicijavimą, kai sukuriamas klasės egzempliorius. Klasėje taip pat yra būdų, kaip gauti produkto pavadinimą ir kainą, taip pat parodyti visą produkto informaciją.
2. Paveldėjimas tarp klasių „Transporto priemonė“ ir „Automobilis“
klasės transporto priemonė {
apsaugotas prekės ženklas;
viešoji funkcija __construct($mark) {
$šis->prekės ženklas = $prekės ženklas;
}
viešoji funkcija getBrand() {
grąžinti $this->brand;
}
viešoji funkcija drive() {
echo „Vairuojant transporto priemonę...“;
}
}
klasė Automobilis pratęsia Vehicle {
privatus $modelis;
viešoji funkcija __construct($brand, $model) {
parent::__construct($brand);
$šis->modelis = $modelis;
}
viešoji funkcija getModel() {
grąžinti $this->model;
}
viešoji funkcija showDetails() {
echo „Markas: “ . $šis->prekės ženklas . «
";
echo „Modelis: “ . $this->model . «
";
}
}
$automobilis = naujas automobilis ("Toyota", "Corolla");
$automobilis->showDetails();
$car->drive();
Šiame pavyzdyje sukūrėme klasę „Transporto priemonė“ su saugoma savybe „make“ ir metodais, kaip gauti markę ir vairuoti transporto priemonę. Tada sukūrėme „Automobilio“ klasę, kuri paveldima iš „Transporto priemonės“ klasės ir prideda privačios nuosavybės „modelį“ bei metodą, kaip parodyti visą automobilio informaciją. Sukūrę „Automobilio“ klasės egzempliorių, galime pasiekti tiek pagrindinės klasės metodus, tiek konkrečius antrinės klasės metodus.
3. Polimorfizmo taikymas „Gyvūnų“ ir „Katės“ klasėse
abstrakti klasė Gyvūnas {
apsaugotas $name;
viešoji funkcija __construct($name) {
$šis->pavadinimas = $pavadinimas;
}
abstrakti viešoji funkcija makeSound();
}
klasė Šuo pratęsia Gyvūnas {
viešoji funkcija makeSound() {
aidas „Šuo loja: Au au!“;
}
}
klasė Katė pratęsia Gyvūnas {
viešoji funkcija makeSound() {
aidas „Katė miauksėja: Miau!“;
}
}
$šuo = new Šuo("Firulais");
$katė = nauja Katė("Garfildas");
$šuo->sukurtigarsą();
$katė->SukurtiGarsą();
Šiame pavyzdyje mes sukūrėme abstrakčią klasę „Animal“ su abstrakčiu metodu „makeSound“. Tada sukūrėme klases „Šuo“ ir „Katė“, kurios paveldi iš „Animal“ klasės ir pateikia konkrečius „makeSound“ metodo įgyvendinimus. Iškvietę „makeSound“ metodą „šuo“ ir „katės“ klasėse galime pamatyti, kaip kiekvienas gyvūnas skleidžia skirtingą garsą.
4. Sąsajų naudojimas „Mokėjimas“ ir „PayPal“ klasėse
sąsajos mokėjimas {
viešosios funkcijos procesasMokėjimas($suma);
}
„PayPal“ klasė įgyvendina „Payment“ {
viešoji funkcija processPayment($amount) {
echo „Apdorojamas mokėjimas $“. $kiekis. » per „PayPal“…»;
}
}
klasė „CreditCard“ įgyvendina „Payment“ {
viešoji funkcija processPayment($amount) {
echo „Apdorojamas mokėjimas $“. $kiekis. »su kreditine kortele…»;
}
}
$paypal = naujas PayPal();
$kortelė = new KreditinėKortelė();
$paypal->processPayment(100);
$kortelė->processMokėjimas(50);
Šiame pavyzdyje sukūrėme sąsają „Mokėjimas“ su „processPayment“ metodu. Toliau sukūrėme klases „PayPal“ ir „CreditCard“, kurios įdiegia „Payment“ sąsają ir pateikia konkrečius „processPayment“ metodo įgyvendinimus. Šių klasių egzemplioriuose iškvietę „processPayment“ metodą, mokėjimą galime apdoroti naudodami skirtingus mokėjimo būdus.
Šie pavyzdžiai suteikia supratimą, kaip galite naudoti objektinį programavimą PHP. Ištirkite daugiau pavyzdžių ir praktikuokite savo objektinio programavimo įgūdžius naudodami PHP.
Dažniausiai užduodami klausimai
Kokie yra objektinio programavimo su PHP pranašumai?
Objektinis programavimas su PHP siūlo keletą privalumų, tokių kaip pakartotinis kodo naudojimas, moduliškumas, kodo skaitomumas ir priežiūra bei galimybė tiksliau modeliuoti problemas naudojant objektus ir jų sąveiką. Be to, OOP suteikia didesnį lankstumą ir išplečiamumą kuriant programas ir svetaines.
Ar norint programuoti PHP reikia mokytis objektinio programavimo?
Norint programuoti PHP, nebūtina mokytis objektinio programavimo, nes PHP taip pat palaiko struktūrinį programavimą. Tačiau į objektą orientuotas programavimas yra plačiai naudojamas kuriant PHP programas ir svetaines, o išmokus jį atverti daugiau modulinio, daugkartinio naudojimo ir prižiūrimo kodo.
Kuo skiriasi klasė nuo objekto objektinio programavimo?
Objektiniame programavime klasė yra šablonas arba forma, apibrėžianti bendras savybes ir metodus, kuriuos turės iš jos sukurti objektai. Kita vertus, objektas yra konkretus klasės egzempliorius, turintis savo savybes ir galintis vykdyti klasėje apibrėžtus metodus.
Kada turėtumėte naudoti paveldėjimą objektiniame programavime su PHP?
Paveldėjimas naudojamas objektiniam programavimui, kai norima sukurti naują klasę, pagrįstą esama klase, siekiant paveldėti jos savybes ir metodus bei pridėti papildomų funkcijų arba pakeisti esamą elgseną. Paveldėjimas leidžia pakartotinai naudoti kodą ir kurti klasių hierarchijas, todėl kodą lengviau tvarkyti ir prižiūrėti.
Kuo skiriasi abstrakčioji klasė ir sąsaja PHP?
Abstrakčioji klasė yra klasė, kurios negalima tiesiogiai sukurti, tačiau ji naudojama kaip pagrindas poklasiams kurti. Jame gali būti metodų su konkrečiais įgyvendinimais ir abstrakčiais metodais, kuriuos turi įgyvendinti poklasiai. Kita vertus, sąsaja yra abstrakčių metodų rinkinys, kurį turi įgyvendinti bet kuri ją įgyvendinanti klasė. Klasė gali įdiegti kelias sąsajas, bet gali paveldėti tik iš vienos abstrakčios klasės.
Kokia yra inkapsuliavimo svarba objektiniam programavimui?
Inkapsuliavimas yra esminis objektinio programavimo elementas, nes jis leidžia paslėpti vidines objekto detales ir atskleisti tik ribotą sąsają su juo sąveikauti. Tai padeda apsaugoti jautrius duomenis, užtikrinti objekto būsenos nuoseklumą ir pagerinti kodo skaitomumą bei priežiūrą. Inkapsuliavimas taip pat palengvina kodo evoliuciją, nes vidiniai objekto pakeitimai neturi įtakos kitiems objektams, kurie sąveikauja su juo.
Išvada
Objektinis programavimas naudojant PHP yra galingas ir lankstus metodas kuriant programas ir svetaines. Naudodami klases, objektus, paveldėjimą, polimorfizmą ir abstrakciją, galite sukurti modulinį, pakartotinai naudojamą ir prižiūrimą kodą. Šiame straipsnyje mes išnagrinėjome išsamius objektinio programavimo su PHP pavyzdžius, apimančius pagrindines sąvokas ir parodydami jų praktinį pritaikymą. Tikimės, kad šie pavyzdžiai padėjo jums suprasti ir pritaikyti objektinį programavimą savo PHP projektuose!
Rodiklis
- 1 Įvadas
- 2 Kas yra objektinis programavimas?
- 3 Keturi objektinio programavimo ramsčiai
- 4 Išsamūs objektinio programavimo su PHP pavyzdžiai
- 5 Dažniausiai užduodami klausimai
- 5.1 Kokie yra objektinio programavimo su PHP pranašumai?
- 5.2 Ar norint programuoti PHP reikia mokytis objektinio programavimo?
- 5.3 Kuo skiriasi klasė nuo objekto objektinio programavimo?
- 5.4 Kada turėtumėte naudoti paveldėjimą objektiniame programavime su PHP?
- 5.5 Kuo skiriasi abstrakčioji klasė ir sąsaja PHP?
- 5.6 Kokia yra inkapsuliavimo svarba objektiniam programavimui?
- 6 Išvada