Autor Zpráva
Lokutus7323
Profil *
Dobrý den,
plánuji aplikaci, kterou budu i nadále vyvíjet. Nicméně, pojede na jediné doméně, čistě pro mě, ani design se s časem nebude měnit. nebude potřeba náhlých změň typu databáze, nebo tak podobně.


Proto se chci zeptat, vyplatí se jí psát objektově v PHP?

Děkuji
Lokutus7323
mckay
Profil
Lokutus7323:
Dle mého, čistě subjektivního názoru se vyplatí psát objektově všechno, kde budete pracovat s databází, používat více jak dvě funkce a mít víc jak pět souborů.
blizzboz
Profil
Lokutus7323:
určite áno OOP je rýchlejšie prehladnejšie a jednoduchšie ako procedrálne programovanie
t4nn3r
Profil
No hlavně jsou pak jednodušší jakékoli úpravy/rozšiřování aplikace ... takže já sem pro OOP
AM_
Profil
blizzboz:
OOP je rýchlejšie prehladnejšie a jednoduchšie
no jestli je rychlejší a jednodušší to bych trochu zpochybnil, hlavní výhoda je z těhle tří pouze ta přehlednost + pohled na problém bližší skutečnosti (svět se skládá z objektů, nikoli proměnných a funkcí). Naopak "problém" OOP je, že samotná jeho filozofie je poměrně složitá a pokud to má mít smysl, chce to 10x vetší rozvahu a lepší představu problému, aby byl kód opravdu čistý a problém správně objektově rozdělen.
Záleží to na povaze aplikace, v PHP se dá programovat objektově i procedurálně zároveň, tak bych se tomu vůbec nebránil - když to píšeš jen pro sebe, piš jak ti to nejvíc vyhovuje a objekty použij tam, kde to má smysl.
Nox
Profil
Rychlost není špatná, ale je to (zatím?) bohužel docela žravé na paměť
Koudis
Profil
Nox:
záleží na jakém OS to máte spuštěné (zajímavé je že některé aplikace na UNIXU žerou víc paměti než na widowsu naopak-vyjímka)...
Nox
Profil
Na hostingu, píší "Linux", konkrétněji ne, ale asi se to dá brát jako Unix-based*....více jsem se o tom zmiňoval zde: http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=105526&page=-1 ...i má menší aplikace (pokud tam v tomto směru nemám nějakou krpu) se i s pouhými asi 10ti (celkem malými) třídami blíží 1MB, což až nechápu (a když sem se díval jak obsáhlý je Zend, to musí mít snad ke 100MB....)

*) http://community.bbgamezone.net/index.php/topic,2614.0.html tady naopak na Unix-based vychází míň, ale psal si "některé", tak tady to zrovna asi vychází jinak
Lokutus7323
Profil *
Děkuji Vám za odpovědi. Co se týče OOP v PHP, tak jsem s tím začal poměrně nedávno. V praxi, na nějakém větším projektu jsem to neměl možnost vyzkoušet. Na jednu stranu chci tuto aplikaci vzít jako možnost si OOP vyzkoušet komplexně v praxi, nicméně jelikož to bude aplikace, která má prezentovat, nechtěl bych to dělat zbytečně složitě.

Ještě by měl dotaz, jak je to s mícháním procedurálního zápisu a objektového v praxi? Jde mi o to, že si třeba nadefinuju jednotlivé objekty, atdp ..ale pak je v kódu budu volat na základě procedurálních podmínek. Nebo jakým způsobem radši píšete vy, evetulně který je ten "standartní" ...

"Zatím si nedovedu představit, že by celá aplikace fungovala jenom na základě objektů, a na internetu mi chybí odpovědi na právě takové otázky na jaké se ptám"

Děkuji
Lokutus7323
AM_
Profil
Lokutus7323:
Ještě by měl dotaz, jak je to s mícháním procedurálního zápisu a objektového v praxi?
Jsou lidé, kteří nadávají na kombinování těchto způsobů, a jsou lidé, kteří nadávají na kompletně objektové jazyky (C# atd...). V PHP se stejně při používání OOP kombinaci obou nevyhneš, protože většina vestavěných funkcí PHP jsou (zatím jen) procedurálního stylu. Já osobně si myslím, že kombinování přístupů nevadí, ono stejně objektové programování je vlastně převlečené procedurální s něčím navíc.

Ještě co se týče rychlosti a paměti: neřekl bych, že OOP je zas tolik drasticky náročnější ani na jedno z toho. Rozhodně ne o tolik, aby na tom záviselo rozhodnutí, zda psát objektově či ne. Obecně zdrojový kód asi bude o něco málo větší, ovšem o zcela zanedbatelné málo. Např. celý (plně objektový) Nette framework má ve své "minified" (tedy všechny soubory sražené do jednoho o minimálním objemu) verzi 330KB, to je skoro nic. Nicméně 1MB na 10 tříd, jak psal Nox, podle mě zavání špatným návrhem (nedostatečné rozdělení na dílčí problémy).
Jan Tvrdík
Profil
Zatím si nedovedu představit, že by celá aplikace fungovala jenom na základě objektů
Aplikace využívající architekturu MVC jsou běžně zcela objektové. Můžeš zkusit použít i nějaký osvědčený MVC framework (CodeIgniter, Nette, Zend, …)
Nox
Profil
AM:
Jestli chápu dobře cos psal tak myslím zaměňuješ velikost souboru a paměťovou náročnost (memory_get_usage() ), co jsem psal jsem myslel to druhé
Z hlediska velikosti souborů to má asi 28kB neminifikované (a spíš celkem rozvláčné), jak jsem psal, je to malé, takže ikdyby to nebylo ideálně navrženo, tak je to podle mě příliš
(kdybys mi poslal kontakt, byl bych konkrétnější a poptal se, jestli by nevadilo)
blizzboz
Profil
AM:
"o jestli je rychlejší a jednodušší to bych trochu zpochybnil"

ja som nemal na mysli rýchlosť kódu, ale rýchloasť vývoja. napr. vývoj v procedurálnom Windows API je pomalší ako v objektovom VCL, Qt, alebo WinForms. OOP je pre vývojára rýchlejšie a lacnejšie a získava ním konkurenčný výhodu. a čo sa týka jednoduchosti tak OOP je v praxi jednoduchšie lepšie sa mi píše takýto kód:

Var
Button: TButton;
Begin
Button := TButon.Create(self);
Button.Caption := 'OK';
Button.Visible := True;


ako keby som mal volať funkciu s 10timi parametrami a každý parameter by mal nejakú nezmyslenú skratku typu HWnd, WndProc, HDC tak ako je to bežné v procedurálnom Windows API.
AM_
Profil
blizzboz:
jo, tak v tomhle smyslu máš pravdu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0