Zadejte hledaný výraz...

OOP – správné navržení "aplikace"pochopení/principy)

Ondřej Záruba
verified
rating uzivatele
26. 6. 2011 19:11:21
Zdravím,
na popudy zdejších webtržníků jsem se OOP začal věnovat a čím dál více zjišťuji, že jsem měl začít už dříve. (připravil jsem se o hodně...)
Momentálně ale řeším malý problém. Snažím se nějakým způsobem vymyslet a navrhnout třídu(třídy) pro klasický výpis textu z databáze. Snažím se to celé napsat tak, aby byl script co nejvíce univerzální a dal se použít ve 100% případů a zde sem právě narazil na oříšek.
Mám za úkol vypsat dva různé textové bloky.
První blok je obyčejný text který se zobrazuje na indexu jako uvítací zpráva. Z databáze se tahá klasicky s nastaveným LIMITem na 1 s tím, že v $posittion je uložena informace o tom jaký text chci z databáze vybrat. V našem případě má hodnotu "hallo_text"
S tím, že výsledný kód bude vypadat takto:
Druhý blok je právě to co mi dělá problémy. Mám za úkoly vypsat na indexu 2 aktuální novinky.
Výsledný kód musí vypadat takto:
Problém je právě v tom, že
Tady už nastává právě onen problém. Tohoto výpisu dosáhnu tímto mysql dotazem
Tady právě nastává problém. Jediné řešení, jak spojit tyto dva různé výpisy do jedné třídy, které mě napadlo byl, že bych uvnitř zjišťoval hodnotu $posittion a podle toho přiděloval různé druhy výpisů.
a nakonec vrátil hodnotu $w
Bohužel, toto řešení není ideální jak mi jíž bylo vytknuto. Podle toho co jsem pochopil z předchozích reakcí by se neměli jazyky míchat, ale ať si lámu hlavu jak chci nemůžu vymyslet způsob jak se tomu vyhnout...
↑ což je první problém
↓ druhý problém se týká samotného návrhu tříd
V tomto případě vytvářím třídu DATABASE v ní mám funkce pro připojení (connect) a výpis (query) kde na základě parametrů, které dostane vytváří sql dotaz a vrací
A pak samozřejmě třídu HTML s funkcí text v níž bych vypisoval výše řečeným způsobem požadované výsledky.
Ale jak jsem řekl, přijde mi to hrozně těžkopádné a špatné řešení. Pokud bych měl více rozdílný výpisů musel bych cpát všude podmínky a upravovat kódy což není zrovna šťastné řešení. Doufám, že si někdo najde "chvilku" a koukne se na to... Rád bych se doučil programovat správně, tak aby výsledky měli nějaký styl a nebyla to jen hromada splácaných kódů na hranici funkčnosti.
P.S. Scripty jsou bez jakýchkoli ověřování a úprav pro správný výpis... jde mi především o podstatu..
Předem díky
S pozdravem
Ondra Z.
26. 6. 2011 19:11:21
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649369
MAHI
verified
rating uzivatele
(15 hodnocení)
26. 6. 2011 19:28:25
Moc mě nebaví to číst, ale řeknu to krátce - vynalézáš znovu kolo (zkus detailně prozkoumat mysqli).
A to tvoje kolo není moc kulaté, inklinuje k hranatosti (tzn. ne objektové, ale procedurální :-))
Zkus si představit nějakou reálnou a jednoduchou situaci a tu si v OOP namodelovat, určitě ti bude ochotno pak poradit víc lidí než s tímhle.
26. 6. 2011 19:28:25
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649368
hm
verified
rating uzivatele
(20 hodnocení)
26. 6. 2011 19:32:34
:) protoze uz chapes oop alespon okrajove, posunul bych te k frameworku :) tam totiz pochopis nejen jak oddelovat logiku a sablony, ale mnohem vic... navic nektere frameworky jsou velmi dobra ukazka vyuzivani OOP v praxi... uprimne nez jsem zacal s frameworkem, tak jsem OOP prilis neumel, az na frameworcich jsem se ho naucil skutecne poradne... jinak samozrejme, cpat html do php je velmi spatna strategie :) vzdycky by sis mel vratit data v nejake strukture (pole, objekty) ty nasledne predat do sablony a tam s nimi nalozit podle potreb :)
26. 6. 2011 19:32:34
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649367
Ondřej Záruba
verified
rating uzivatele
26. 6. 2011 20:18:29
marcus33cz :
Zkus si představit nějakou reálnou a jednoduchou situaci a tu si v OOP namodelovat, určitě ti bude ochotno pak poradit víc lidí než s tímhle.
Máš pravdu asi nebyl ideální příklad...
Aleš Jiříček :
nektere frameworky jsou velmi dobra ukazka vyuzivani OOP v praxi
Můžeš doporučit?
uprimne nez jsem zacal s frameworkem, tak jsem OOP prilis neumel
Chystám se s frameworkem začít, ale přijde mi, že moje znalosti OOP jsou moc malé na to, abych mohl s něčím takovým efektivně pracovat... a abych se přiznal mám z nich strach...
zatím se jen pročítám kódy kohany, je fakt že jsme si jí ani nestáhl...
26. 6. 2011 20:18:29
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649366
Chceš dobře pracovat s OOP? Přejdi na jakýkoliv Framework - to tě donutí rovnou psát kód v OOP. Doporučuji pro začátek Nette Framework a pro komunikaci s databázi DiBi od stejného tvůrce. Až tento Framework pochopíš, jistě tvé znalosti OOP budou pak na celkem dobré úrovni.
26. 6. 2011 20:29:02
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649365
Ondřej Záruba
verified
rating uzivatele
26. 6. 2011 20:32:26
Ostatně vím, že je to 100x omílané téma, ale když se chci OOP naučit na úroveň kdy bych byl schopný v něm psát sám bez použití framworků s čím a jak začít? O OOP už jsem si něco přečetl nějaké tutoriály na OOP přímo v PHP jsem našel a přečetl... Mám půjčené i nějaké knížky obecně o OOP v jiných jazycích a celkově o struktuře a logice, ale co dál?
Říkáte framework? V tom případě jaký se hodí pro začátečníka jaký sem já ?
26. 6. 2011 20:32:26
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649364
Ondřej Záruba
verified
rating uzivatele
26. 6. 2011 20:34:40
Na Nette jsem koukal, dokonce i stáhl a snažil se rozchodit, bohužel jsem narazil na to že dokumentace kterou tam mají prostě nefunguje. Mají jinak pojmenované složky a soubory a pomalu každou druhou věc jsem musel dohledávat na fóru. Nevím, ale na mě neudělal zrovna dobrý první dojem
Nejsem si zrovna jistý jestli je to správná volba, ale pokud to doporučujete (i ostatní jsou pro?) tak se do něj zase "zahrabu"
26. 6. 2011 20:34:40
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649363
hm
verified
rating uzivatele
(20 hodnocení)
26. 6. 2011 20:52:29
nette je dobrej framework ale jeho velka slabina je, ze musis umet uz s nejakym frameworkkem, protoze tutorialy a dokumenatce jsou v docela zalostnem stavu... Naopak treba Zend, CodeIgniter, Vii jsou frameworky co maji dokumenate a celkove zdroje na internetu ve velmi dobrem stavu :) nekde mezi tim je asi kohana... tzn neni toho moc, ale s trochou snahy se ta dokumentace a veci po netu daji pouzit...
26. 6. 2011 20:52:29
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649362
Ondřej Záruba
verified
rating uzivatele
26. 6. 2011 21:31:53
Po Nette bych šáhl nebýt té dokumentace to už jsem psal... Kohanu nevím, procházel jsem návody a tutoriály a moc mě neoslovila... Zend jsem také stahoval, ale tady zapracovala moje blbost a nebyl sem schopný ho vůbec rozhejbat...
Asi zkusím ten Zend znovu...
Díky za rady, snad se konečně k něčemu dopracuji
26. 6. 2011 21:31:53
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649361
derk
verified
rating uzivatele
(7 hodnocení)
26. 6. 2011 22:33:31
Ta hrůza, kterou si zde vypsal, nemá s objektovým programováním nic společného.
Poslechni radu a jdi do frameworků. Není pravda, že tím začneš programovat objektově, ale alespoň přejdeš na MVC a pár dalších návrhových vzorů a trochu si zpřehledníš kód. Doporučuji Zend Framework, tam není co nerozchodit a zdokumentován je dobře.
26. 6. 2011 22:33:31
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649360
Michal Skoula
verified
rating uzivatele
(18 hodnocení)
27. 6. 2011 00:13:22
hlavně necpi do MySQL dotazů proměnné, používej argumenty
27. 6. 2011 00:13:22
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649359
hm
verified
rating uzivatele
(20 hodnocení)
27. 6. 2011 01:00:58
doplnim michala: pokud pisete sql dotazy rucne (coz doporucuji) vyplati se vzhledem k funkcnosti a bezpecnosti pouzivat prepared statements (google poradi), vim ze jsem rekl prakticky to same, ale takhle to bude pochopitelnejsi
27. 6. 2011 01:00:58
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649358
Řekl bych, že právě Nette Framework je nejlehčí Framework, který se dá naučit. Dá se říci, že je to startovací Framework. Zend nedoporučuji začátečníkovy z toho důvodu, že je jednoduše moc složitý a je to děsný moloch. Pokud jde o tutorial Nette tak co ti tam chybí? Podle mě je to celkem dobře napsaný a když tomu věnuješ delší čas tak se ti to podaří rozběhat a uvidíš sám, že chyba spíš byla u tebe. Jinak Nette je český Frame a když něco nevíš tak se lehce zeptáš na fóru.
27. 6. 2011 09:35:28
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649357
Ondřej Záruba
verified
rating uzivatele
27. 6. 2011 22:05:02
Česká komunita je výhoda, proti samotnému frameworku nic nemám, ale právě samotná dokumentace je trochu oříšek... Neboť zrovna http://doc.nette.org/cs/quickstart jaksi není k dispozici a zrovna to by se hodilo.
27. 6. 2011 22:05:02
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649356
Filip T.
verified
rating uzivatele
(2 hodnocení)
29. 6. 2011 10:11:42
Doporučim ti Cakephp. Dokumentace je výborná (dokonce z velké části i CZE) a naučíš se na ní MVC architekturu atd.. (případně až to trochu pochopíš, tak třeba Kohanu.. nebo počkat chvilku a zkusit nový FuelPHP 1.1 framework, který oplývá rychlostí jako CodeIgniter a přitom nabídne pohodlí HMVC jako Kohana )
jinak co se týče Nette, tak podle mě je lepší se držet dál.. ano je to CZ FW, ano ma velkou komunitu, ale to je tak všechno. Podle posledního testu rychlosti (v komentářích pod článkem) co jsem viděl, je to jeden z nejpomalejších FW vůbec. Dokumentace není zrovna nejlepší, nehledě na to že celý FW táhne jeden člověk a tomu jsou "fuk" nějaké termíny. A ta opjevovaná "aktivní" komunita? Kdyby byla pořádná dokumentace, tak na fóru je o 2/3 příspěvků méně.
29. 6. 2011 10:11:42
https://webtrh.cz/diskuse/oop-spravne-navrzeni-aplikacepochopeni-principy/#reply649355
Pro odpověď se přihlašte.
Přihlásit