spájame
slovenskú
IT komunitu
pridaj sa
Registrácia · Login

Peter Horváth 1.2.2015
Hodnoť článok:
3 1

Objektovo orientované programovanie v PHP

Dlho som si kládol otázku, načo používať objekty v programovaní? Má objektové programovanie (ďalej iba OOP) v PHP vôbec zmysel? Čo mi môže priniesť? Čím začať? Všetky tieto otázky a ešte viac si vysvetlíme v nasledujúcich riadkoch.

Kedy OOP a kedy nie?

Podľa môjho názoru je OOP nutné v prípade, že návrh PHP programu počíta s veľkosťou kódu nad 2 MB. Rovnako skúsenosť ukázala, že v prípade PHP 4 a starších verzií jazyka PHP sa neoplatí nad OOP ani premýšľať. Využitie tak starého programovacieho jazyka na programovanie v OOP paradigme nemá zmysel. Objektový model PHP 4 je zastaralý a zúfalo nedotiahnutý. Tento problém prekvapivo rieši PHP 5. Našťastie PHP 5 sa príkazovo takmer nelíši od PHP 4, takže sa netreba učiť takmer nič nové. Stačí iba kráčať s dobou. Objektovo orientované programovanie je vhodné pri modulárnej konštrukcii programov, čo znamená, že do programu môžeme vkladať kód bez nutnosti prepisovať existujúci kód. Dôležité je pochopiť, na čo slúži objekt.

Čo to teda je ten objekt?

Objektový model programovacieho jazyka je štruktúra umožňujúca skladať program z častí, ktoré voláme objekty. Jednotlivé objekty chápeme ako malé časti, ktoré neskôr utvoria funkčný celok, avšak umožňujú rýchlu modifikáciu celého programu.

Webová stránka sa skladá z desiatok, možno až z tisícok funkcií, pričom tieto funkcie obsahujú množstvo opakovaného kódu. Keď chceme zmeniť zdrojový kód, ktorý sa opakuje na rôznych častiach, dochádza k rôznym neočakávaným chybám. Programátor zabudne na niečo, čo sa na prvý pohľad neprejavuje a na chybu sa príde až keď je už neskoro. Problém tiež nastáva z časového hľadiska, kód sa stáva neprehľadným a hľadanie detailov zaberá množstvo času.

Objekty tieto problémy riešia, pretože stránka pozostáva z objektov, ktoré zdieľajú svoj kód ďalším objektom v prípade, že potrebujú podobné vlastnosti. Napríklad, ak máme objekt “čiara” s vlastnosťou “dĺžka”, môžeme ho využiť pre vytvorenie objektu “obdĺžnik”. Objekt “obdĺžnik” môže zdediť vlastnosť “dĺžka” od objektu “čiara” a stačí už len doplniť vlastnosť “výška”.

OOP example

To nám pomohlo vytvoriť objekt, v ktorom bolo nutné programovať iba nové vlastnosti. Vzniká tu ale otázka, prečo je nevhodné použitie OOP pri menších projektoch. Objektovo orientované programovanie znižuje veľkosť kódu iba pri rozsiahlejších projektoch. Malé projekty skladajúce sa napríklad z dvoch alebo troch objektov trpia pri použití OOP množstvom nevyužitého kódu.

V prípade, ktorý ste videli na obrázku, by bolo jednoduchšie použiť pár jednoduchých príkazov a nevytvárať žiadne objekty. Predstavte si, že máme podobných objektov vyrobiť 2000. Každý objekt bude napríklad časť webovej stránky. Vieme, že každý objekt na webovej stránke je obdĺžnikom alebo štvorcom. Jednoducho teda dokážeme preniesť vlastnosti ako je farba, výška, šírka, druh tagu atď. na ďalšie objekty. To nám skráti programovanie pri správnom návrhu až o polovicu. Na objektovom programovaní je veľmi dôležitý návrh, pozrime sa teda, na čo treba myslieť.

Dvakrát meraj a potom ešte raz

V prípade OOP je priam nevyhnutné rozdeliť projekt na časti. Je dôležité pochopiť potrebu rozdelenia celku na objekty a v objektoch vyhľadať spoločné vlastnosti. Jednou s ďalších nezanedbateľných súčastí pri návrhu je úplné eliminovanie dedenia nepotrebných vlastností. Nepotrebné vlastnosti môžu v objekte vyvolávať nežiadúce správanie a tak spôsobovať bezpečnostné problémy. Dedenie nám ale poskytuje možnosť skopírovať vlastnosti triedy, ktorá objekt do značnej miery ochráni pred vznikom bezpečnostných rizík. Kvalitný návrh vám umožní využiť potenciál OOP, žiaľ iba v obmedzenom objektovom modele PHP.

Peter Horváth Peter Horváth

Venujem sa UX designu a webovému dizajnu, SEO optimalizácií a webovím technológiam ako PHP, jQuery, HTML5, CSS3, JavaScript, AJAX. Rád sa hrabem v rôznych technológiách a zjednodušujem si život vďaka IoT na báze Arduino alebo Raspberry PI takže sa občas krútim aj okolo C, C++ a Linuxu.

Moje motto:
Všetko sa dá, vždy existuje cesta.

Web:
Mastery.sk


Hodnoť článok:
3 1

2 komentáre k článku:

Komentovať môžu iba prihlásení

Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)

Prihlás sa tu, ak už máš profil na Zajtra.sk:


Zabudol som heslo

3 0 Peter Horváth 1.2.2015 22:46:02
Ďakujem, za kritiku. Článok som písal už dávnejšie, len som ho neuverejnil. V tom čase bol písaný z pohľadu samouka začiatočníka. Neberiem to osobne, naopak vážim si tento druh slušnej kritiky.
2 0 Matej Bádal 1.2.2015 21:11:36
V prvom rade nechcem byť zlý, pretože si vážim ľudí, ktorí sa snažia nejako podeliť s komunitou o svoje vedomosti, ale v tomto prípade sa musím vyjadriť.

Ak chcete hovoriť o OOP, spomenul by som jeho základné princípy (abstrakcia, dedenie, polymorfizmus, zapúzdrenie).

Z pohľadu OOP je to dedenie úplne zlé. Princíp dedenia ste síce opísali správne, neopísali ste však jeho význam - prečo ho používať (ušetrenie zopár riadkov kódu nie je dôvod). Z pohľadu abstrakcie, nemá dané dedenie význam, dokonca by som povedal, že porušuje Liskovej princíp substitúcie - http://en.wikipedia.org/wiki/Liskov_substitution_principle

Tento princíp slúži na určenie toho, kedy dedenie použiť a kedy nie. Keď sa na to pozriete z pohľadu abstrakcie, čiara a obdĺžník majú spoločné črty (oba sú útvary). Čiara a obdĺžník by však mali podľa mňa mať medzi sebou skôr agregačný vzťah (obdĺžník sa skladá zo 4 čiar).

Neberte to osobne, Že Vás chcem zhodiť, alebo niečo podobné, ale internet je plný nepresných informácií a tieto je dobré čím skôr eliminovať.


Zajtra.sk > Programovanie > PHP > Objektovo orientované programovanie v PHP


Kritika

Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!

Reklama

Seriály zo Zajtra.sk

Reklama