Zdravím.
Chtěl bych se zeptat, zda je při programování webů dobré používat OOP. Má nějaké OOP své výhody(nevýhody) nebo řeší lépe problémy.
Fórum › PHP
OOP
OOP řeší problémy jinak - aneb stejného výsledku můžeš docílit i při funkcionárním programováním. Při OOP se objekty, které můžeš popsat i bez znalosti jejich vnitřního fungování, popisují právě dle toho, jak s nimi pracuješ. Objekt uživatel, má určité vlastnosti (např práva k určité činnosti, nastavení atd) a metody (lze ho smazat, vytvořit, editovat mu nastavení, měnit práva atd) a ty jsou zapouzdřeny v jeden celek. Ve funkcionárním programování pravděpodobně uděláš něco takovéhleho:
$uzivatel = "Lojza";
$uzivatel_status = getUserStatus($uzivatel);
$uzivatel_ikona = getUserIcon($uzivatel);
Zde jsou prostě dvě funkce, které spolu nijak nesouvisí, nijak se neovlivňují, každá hodí svůj dotaz na databázi, aby získala požadované info - teda leda by používaly data z nějaké globální proměnné, která by ještě musela být nastavena konstruktorem, fuj - na to je právě OOP. :)
V OOP je uživatel zapouzdřen do objektu:
$uzivatel = new User ("Lojza");
$uzivatel_status = $uzivatel->getStatus();
$uzivatel_ikona = $uzivatel->getIcon();
A teď už záleží jen na tom, jak naprogramuješ třídu User. Například už při vytvoření uživatele můžeš předpokládat, že s ním budeš chtět dělat i víc než, že ho vytvoříš - takže v rámci optimalizace pošleš jeden dotaz na server rovnou než abys posílal deset dalších později - vybereš si z db veškeré nastavení, statut atd (a uložíš si to do soukromých proměnných dostupných pouze uvnitř metod objektu) a pak už jen budeš vracet hodnoty pomocí funkcí (getterů).
Přístup k atributům samozřejmě může být i přímý - tzn atributy jsou public (veřejné i mimo práci uvnitř objektu) a pak získáš info o statu prostě takhle:
$uzivatel->status;
Většinou se ale atributy schovávají a přistupuje se k nim pomocí setterů a getterů v rámci uzavřenosti objektu - přece jen při nastavení nějaké hodnoty se ještě ukládá a toho lze docílit nejspolehlivěji přes set a get metody, jinak objekt nepozná, že se něco změnilo a že by měl něco provést (pominu magické metody).
OOP dle mého pomáhá lepšímu návrhu programu. Nutí člověka se nejdřív zamyslet nad tím, jak se s objektem bude pracovat - vnitřnosti až potom (a lépe).
// Můj subjektivní názor. :P :)
Samozřejmě OOP není žádnej univerzální lék, rvát ho všude je blbost.
Aneb viz http://objekty.vse.cz, php manuál a google - téma OOP vs jiné postupy už bylo propíráno dostkrát. :)
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 58 hostů
Moderátoři diskuze