Názory ke článku OOP v PHP – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Názory ke článku OOP v PHP – Programujte.comNázory ke článku OOP v PHP – Programujte.com

 

Názory ke článku OOP v PHP

Tom V   NOVÝ
9. 12. 2009

Super clanek. Diky za nej. Nejsem primarne php programator a OOP obecne pouzivam uz dlouho, ale ocenuji vyznam tohoto clanku pro osvetu php programatoru. Snad pozvedne uroven php programatoru (tedy te bastlirske casti z nich, cest vyjimkam). Jenom bych k OOP dodal, ze lide po pochopeni zakladnich principu maji tendenci OOP cpat vsude a roubovat na vsechno (sam sem to tak delal)...neni to uplne nejlepsi a casto si tak pridate praci. Nejlepsi je vzdy zlata stredni cesta.

Tomáš   NOVÝ
10. 12. 2009

To, že ukážete lidem jak se píšou základní konstrukce neznamená, že to někomu pomůže pochopit psání aplikací pomocí OOP. Na internetu mi chybí články, které by lidem vysvětlili analogii objektů s náhledem na fungování aplikace (i kdybychom vysvětlovali proč tak psát přes nějakou hloupost s auty), takových článků je naopak na internetu přehršle, tedy z mého pohledu, ano, pěkná sumarizace syntaxe, nikoliv snaha vysvětlit obecné fungování.

vrana   NOVÝ
10. 12. 2009

Článek je moc hezký, mám jen několik drobných připomínek:

[seznam]Viditelnost protected je dostupná i pro předky objektu, nejen pro potomky.
To, že si nedovedeme představit využití dědičnosti u nějaké třídy, podle mě ještě neznamená, že bychom ji měli deklarovat jako final. Má to význam spíš tam, kde by nám vytvoření potomka nabouralo zbytek kódu.
Základní metoda normalizovatCestu by mohla volat funkci realpath.[/seznam]

Škoda také nejednotného oddělování slov ve vlastnostech a metodách.

LamiCZ   NOVÝ
11. 12. 2009

Článek není špatný, akorát bych měl několik poznámek:
1) připadá mi to trochu jako manuál, ten je na php.net, OOP není o syntaxi ale o způsobu myšlení a hlavně praxi (ostatně jako každý jazyk)
2) procedurální programování není špatný a nechápu, proč je dotyčný označen za bastliče. Na tom přece není nic zlého, z praxe jsem spíš pro přehledný jednoduchý procedurální webík než spagetti bastl či nevhodně navržené OOP. Samozřejmě souhlasím s tím, že úroveň PHP programátorů je značně kolísavá a OOP nutí alespoň nějak úhledně psát kód. Na druhou stranu se totéž dá udělat i s funkcemi a kdo píše "jako prase", OOP se učit asi nebude.
3) "Objekt je něco, co dokáže udržovat svůj stav". To v případě PHP IMHO není zcela pravda. Pokud nepoužijeme speciální cache či např. SESSION, objekty mezi stránkami se stále vytváří a zanikají. Ideální stav by bylo něco na způsob Javy (tam prý lze "odložit" instanci to speciální cache)
4) abstract function a interface jsou pro mne divnost. Ve Vašem příkladě je to již patrné - když mám předka a definuji že v potomcích používám nějakou metodu, definuji ji jako abstract protected function. Potom ale i v potomkovi musí být protected (nebo public), což ale mi přijde divný - ta metoda pro toho potomka je ve vztahu private, ne protected. Nikdo další ji již dědit nemusí a potomek je třeba final. Interface jsou IMHO užitečné při rozsáhlejším počtu vetších tříd, jinak mi to přijde zbytečné.
5) jestli bude další čánek, přimlouvám se rozebrat nativní PHP interface a třídy, popř. výjimky jako např. interface Countable apod. - zkrátka SPL extenzi. Do toho osobně moc nevidím.
Na závěr musím poděkovat za "osvětu" PHP komunity, v poslední době co jsem viděl za "kódy", byla síla... jak jsem již řekl, obávám se však, že ten, kdo chce psát rozumně, hledá tyto možnosti, ale kdo ne, bude psát "jak čuně" pořád...

Anonymní uživatel   NOVÝ
12. 12. 2009

1) Jak říkal LamiCZ je to spíš o způsobu myšlení a tak jsem doufal, že se článek bude právě ubírat tímto směrem ale i tak jsem se dozvěděl pár věcí, které jsem ještě nevěděl.

2) Co se týče inteface v kombinaci s hints řekl bych, že to má uplatnění ve chvíli kdy chci použít metody jednoho objektu v objektu jiném aniž bych musel používat $this->$objekt->metoda

interface rozhrani {

public function Metodka(Foo $foo);
}

class Trida implements rozhrani {
public function Metodka(Foo $foo){
$foo->fooMetoda();
$foo->fooPromenna;
}
}
V parametrech metod objektu Trida pak stačí uvádět jen $foo pokud jsou volány přes Metodka
  public function Metodka(Foo $foo){

$foo->fooMetoda();
$foo->fooPromenna;

$this->DalsiMetodka($foo);
}

Anonymní uživatel   NOVÝ
12. 12. 2009

Reagoval na komentář od uživatele Anonymní uživatel :

public function DalsiMetodka($foo){

//cokoliv
}

remmidemmi   NOVÝ
27. 12. 2009

oop v php mi poněkud připomíná hysterii okolo zavádění množin do učiva počtů, anebo chcete-li matematiky, ve škole. V programovacích jazycích a programování je děsně moc moódních trendů. Stejné to je s oop a php. Stačí se ohlédnout zpět, co z programovacích jazyků a způsobu programování přežilo 20 roků? Moc toho není... Já vám, teenageři teď namítnou, že před 20 roky nebyly počítače. Bohužel se mýlí, počítače byli a programovací jazyky a oop také bylo (jen se tomu tenkrát neříkalo "oop").
Já vidím problém někde jinde, a to ve schopnostech lidí´, tedy těch co vytváří programy. Jde o to, že většina se nabifluje kódy a syntaxi nějakého jazyka, příšerně na to lpí (a většinou si myslí, že sežrali všechnu moudrost světa), bohužel mají elementární problém vymyslet slušný algoritmus. Podstatné jsou totiž efektvní algoritmy a ne způsob, jakým ve zdrojáku naťukám kódy, lhostejno v jakém jazyku.

Jan Košař   NOVÝ
27. 12. 2009

To je opravdu úžasný článek. Programování mi celkem jde a už narážím na problém, že je stále těžší získávat nové informace o programování. Váš článek mě toho naučil opravdu hodně. Zítra se podívám na další články od vás, chci se toho naučit co nejvíc a konečně jsem trochu objevil zdroj.
Jsem unešen, děkuji.

spartan13   NOVÝ
31. 12. 2009

Reagoval na komentář od uživatele remmidemmi :
Krásný příspěvek. V něčem sice souhlasím ale ta móda také vždycky byla a bude. Navíc člověk, který se podle Vás jen "nabifluje kódy" tak to asi daleko nedotáhne.

Ačkoliv musím uznat, že já jsem s programováním začínal úplně sám a proti ostatním co se ho učili ve škole apod. jsem sice uměl třetinu toho, co uměli oni ale přesto jsem vyřešil problémy, které byli pro ně takřka neřešitelné..

Flasi   NOVÝ
4. 1. 2010

Reagoval na komentář od uživatele remmidemmi :
Píšete nesmysly.
Je pravda, že v programování je spousta různných cest a uliček z nichž některé se občas stanou módním trendem a následně zapadnou.
OOP ale není žádný módní trend. Je to už 20 let trvající převládající paragigma pro programování. Paradigma zcela nezbytné pro vývoj středních a velkých projektů (kde byste se s funkcionálním programováním - předchozím převládajícím paradigmatem - zcela ztratil). A pokud chce PHP být nástroj pro něco víc, než miniprojekty, tak musí toto paradigma přijmout.
OOP existuje opravdu dlouho (akorát jenom těch posledních 20 let je hlavním směrem programování), ale OOP se mu říkalo od začátku.
Že existuje spousta rádobyprogramátorů, kteří sice umí nějaký jazyk (spíše syntaxi), ale skutečně programovat/alogoritmizovat neumí je dlouhodobě platný fakt, který vůbec nesouvisí ani s OOP, ani s žádnými módními trendy v programování.

Flasi   NOVÝ
5. 1. 2010

Reagoval na komentář od uživatele Flasi :
Tak předchozí převládající paradigma bylo pochopitelně procedurální. Funkcionální je teď na úrovni módního trendu a možná bude tím budoucím, možná ne :-)
Hloupá chyba :-(

Yety   NOVÝ
19. 1. 2010

Dobrá práce. Moc pěkný a komplexní článek. Z knihy, kterou jsem si koupil o OOP v PHP jsem se toho tolik nenaučil.

Jen tak dál...

koudis   NOVÝ
21. 2. 2010

Reagoval na komentář od uživatele Flasi :
naprostá pravda ... málokdo umí vymyslet Algoritmus který by byl jednoduchý a efektivní ...Jeden muj kolega vzdicky riká že Jazyk je Algoritmus napsaný toršku jinak ... když je ten algoritmus špatný , nečitelný, tak pak i kod je nečitelný a vypadá jako od prasete ... :)

pointer   NOVÝ
4. 8. 2010

Už dlhšiu dobu sa zaoberam OOP a Dia sa mi osvedčil ako skvely nastroj pri navrhu ale aj anylýzach projektov. V buducnosti by som očakaval že niečo podobne sa stane sučasťou Zend Studia napriklad.
GNU/Linux: http://live.gnome.org/Dia
Windows: http://dia-installer.de/index_en.html

Musilda   NOVÝ
8. 8. 2010

Reagoval na komentář od uživatele Tomáš :
Přesně to je problém všech článků - pochopil jsem co to je objekt, vím co je třída, ale jak se stím pracuje, to jsem zatím nepochopil. Možná by stačilo napsat "udělej tohle protože proto".

Spectator   NOVÝ
10. 2. 2011

Hoši přidejte, posledních 20 let se o oop mluví jako o OOP, ale toto paradigma je zde už z dob smalltalku a ten je z let 70tých. Smalltalk je čístě objetový jazyk od základů.

modo   NOVÝ
23. 11. 2011

Abosultne nechapem naco je dobre napisat echo "ahoj"; cez oop na 6 riadkov ? Pouzivanie OOP logicky asi nikdy nepochopim.

Mirek   NOVÝ
2. 3. 2012

No jato zkousim pekne od zacatku a bez toho, abych vubec tridu zalozil mi to hlasi Fatal Error. Nechybi uplne na zacatku neco jako

class Trida {};

???

Mirek   NOVÝ
22. 3. 2012

Další věc:

v článku se píše: "Třída SouborovyLog je potomkem (dědí z) Logu. Rovněž tak třída DevNullLog"

ale nechybí tam tedy "extends"(?):

final class DevNullLog
qtl { position: absolute; border: 1px solid #cccccc; -moz-border-radius: 5px; opacity: 0.2; line-height: 100%; z-index: 999; direction: ltr; } qtl:hover,qtl.open { opacity: 1; } qtl,qtlbar { height: 22px; } qtlbar { display: block; width: 100%; background-color: #cccccc; cursor: move; } qtlbar img { border: 0; padding: 3px; height: 16px; width: 16px; cursor: pointer; } qtlbar img:hover { background-color: #aaaaff; } qtl>iframe { border: 0; height: 0; width: 0; } qtl.open { height: auto; } qtl.open>iframe { height: 200px; width: 300px; }

birkof   NOVÝ
7. 4. 2012

Pěkný článek, avšak pro laika moc dlouhý a s minimem příkladů, takže k ničemu.

null_while   NOVÝ
28. 9. 2012     web

Špatně zvolený typ příkladů - všech.

Magman   NOVÝ
17. 5. 2013

Článek dobrý hlavně pro ucelený pohled na (základní) syntaxi OOP v PHP. Hlavně jaký je rozdím mezi skládáním a děděním, použití statických a abstraktních vlastností a metod. Mně osobně nejen na tomto článku chybí informace o tom kdy co a proč použít z praktického pohledu

Jakub Kulhan   NOVÝ
11. 6. 2013

@null_while: Nesouhlasím, přijde mi to naopak :)

@Magman: Kdy, co, proč použít z praktického pohledu - o tom vycházejí celé knížky ;)

A stejně se to člověk nejlépe naučí používat tak, že to bude používat. Dobrý objektový návrh nevznikne tím, že si v nějakém článku přečtu seznam toho, co mám dělat, co za konstrukty kdy využít, nýbrž něco navrhnu, funguje-nefunguje, časem přicházejí nové požadavky, ty staré se mění, refactoruju - a takhle pořád dokola s tím, že vždycky zanechám kód v lepším stavu než předtím.

Praktický (pragmatický) pohled na věc je, že používám, co je potřeba, kdy je potřeba. Tenhle článek není kuchařka, pouze říká, jaké suroviny máš ve spíži - vymyslet, co si uvařit, už musíš sám.

asd   NOVÝ
29. 9. 2013

Pro zacatecnika absolutne nepochopitelny, mel by jsi davat vic prikladu aby lidi pochopili jak to vlastne funguje.

Kit   NOVÝ
2. 11. 2014

#22 Magman
Dědičnost vs. kompozice

Velmi šikovnou pomůckou pro rozhodnutí jsou pomocná slovesa mít a být. Mějme třídy Zvíře, Pes a Obojek.

  • Pes je Zvíře - použiji dědičnost
  • Pes Obojek - použiji kompozici

Toto jednoduché pravidlo se dá použít ve většině případů. Zajímaly by mě výjimky z tohoto pravidla.

Přidej svůj názor

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo e-mailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Reaguješ na příspěvek:
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové názory e-mailem (pouze pro přihlášené)
Sleduj názory ke článku a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.



Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý