Autor | Zpráva | ||
---|---|---|---|
Loopeň Profil * |
#1 · Zasláno: 22. 3. 2009, 23:51:14
Zdravím, potřebuju pomoct s úvodem do frameworku. Mám různé funkce a třídy, které často používám při programování. Chtěl jsem tyto funkce a třídy zapouzdřit do nějakého miniframeworku, ale vůbec nevím jak na to - jak začít. Na jakém principu to má fungovat.
To nejdůležitější pro mě je aby mohla "první" třída využívat metody "druhé" třídy nebo celou instanci "druhé" třídy a to i v případě, že v "druhé" třídě je potřeba využívat první třídu. Je to vůbec možné? Jde mi o to, že mám třeba nějakou metodu v jedné třídě a tu samou metodu potřebuji i v další třídě - přece nebudu mít dvě stejné metody ve dvou třídách? Rád bych taky ke všem třídám a metodám přistupoval přes nějakou centrální třídu, která by ty jednotlivé podtřídy (jako např. nepovinné moduly) "spravovala" (načítala, atp.). Jak mám začít? Zanalyzovat nějaký existující framework nedokážu - jsou na mě moc rozsáhlé a složité :-( |
||
srigi Profil |
#2 · Zasláno: 23. 3. 2009, 06:20:03
V PHP je rozumnym riesenim pouzivat MVC framework.
|
||
Jan Tvrdík Profil |
#3 · Zasláno: 23. 3. 2009, 06:27:09 · Upravil/a: Jan Tvrdík
Loopeň:
Nebo lze použít nějaký hotový framework – např. Nette. „To nejdůležitější pro mě je aby mohla "první" třída využívat metody "druhé" třídy nebo celou instanci "druhé" třídy a to i v případě, že v "druhé" třídě je potřeba využívat první třídu.“ Neznám konkrétní situaci, ale stejně bych ti doporučil zamyslet se nad logikou návrhu. |
||
Mastodont Profil |
#4 · Zasláno: 23. 3. 2009, 07:52:47
Když hotový framework, tak CakePHP, Symfony, Zend.
|
||
jakubroz Profil |
#5 · Zasláno: 23. 3. 2009, 08:32:49
Mastodont
právě se učim cake, mohl bys poradit nějaký tutorial nebo neoficiální dokumentaci? ta ofiko mi přijde nic moc. |
||
Mastodont Profil |
#6 · Zasláno: 23. 3. 2009, 08:35:17 · Upravil/a: Mastodont
jakubroz
Zkus sehnat třeba http://www.apress.com/book/view/1430209771 nebo http://snook.ca/archives/snooks_book_nook/review-cakephp-app-development/ |
||
jakubroz Profil |
#7 · Zasláno: 23. 3. 2009, 08:41:02
Mastodont
diky, to vypadá dobře. Něco ve formě dokumetace neni? |
||
Mastodont Profil |
#8 · Zasláno: 23. 3. 2009, 08:46:21
Nevím o tom, ale já v Cake nedělám, tak to moc nesleduji.
|
||
Loopeň Profil * |
#9 · Zasláno: 23. 3. 2009, 10:04:20
Ty hotové frameworky mi moc nevyhovují. Hotové frameworky nemají specializované funkce, které potřebuju. A navíc bych chtěl alespoň částečně porozumět tomu principu / postupu. Ne to jen vyřešit. Díky srigimu za odkaz, prostuduju. A pro pana Tvrdíka příklad:
Mám třídu "email" a třídu "upravit" a chci z aplikace poslat upravený e-mail. Rád bych volal něco jako $framework->mail->send_welcome('UTF', 80); $framework->upravit->get_utf('text'); Prostě jednoduše zapouzdřit třídy do jedné centrální a aby se ty podtřídy mohli navzájem používat. |
||
Jan Tvrdík Profil |
#10 · Zasláno: 23. 3. 2009, 10:15:25
Loopeň:
Význam třídy upravit mi připadá nejasný, ale to co potřebuješ se řeší tzv. skládáním tříd. Tzn., že třída Email bude mít členskou proměnnou, který bude obsahovat instanci třídy Upravit. |
||
Mastodont Profil |
#11 · Zasláno: 23. 3. 2009, 10:21:03
$framework->upravit->get_utf('text'); Je dobré se rozhodnout, jestli názvy budou anglicky nebo česky. Tohle vypadá děsně. |
||
Loopeň Profil * |
#12 · Zasláno: 23. 3. 2009, 12:15:30
Jan Tvrdík A je možný to co jsem říkal? Aby třeba ve třídě A se používala metoda co je ve třídě B a naopak? Tj. aby byly oboustranně provázaný.
Mastodont Já vím - jen příklad :-) Nic podobnýho bych v kódu nenechal. |
||
lucas Profil * |
#13 · Zasláno: 23. 3. 2009, 12:30:25
Loopeň
Ak pracujes sam, tak Ti nic nebrani si urobit svoj vlastny framework, ktoremu budes 100% rozumiet. Ak pracujes (alebo budes pracovat) v time, tak je asi lepsie pochopit uz niektory existujuci framework. Toto, co vyzadujes: aby metoda z A sa mohla pouzivat v metode B, je viac rieseni, jedno z nich je napr. __autoload |
||
Loopeň Profil * |
#14 · Zasláno: 23. 3. 2009, 13:03:10
ad) __autoload() toto znám, ale v tomto případě nevím jak by to mělo fungovat. V třídě A chci použít metodu ze třídy B a tak načtu třídu B, ale z té třídy B se zase potřebuje použít metoda z třídy A. Tím imho vznikne nekonečnej cyklus nebo tak něco :-)
|
||
Joker Profil |
#15 · Zasláno: 23. 3. 2009, 13:51:25
Loopeň
V třídě A chci použít metodu ze třídy B a tak načtu třídu B, ale z té třídy B se zase potřebuje použít metoda z třídy A. Tím imho vznikne nekonečnej cyklus nebo tak něco :-) Nevznikne, leda v případě, že by se volaly navzájem tytéž metody :-) Pro samotnou deklaraci třídy není podle mě podstatné, jaké další třídy jsou použité uvnitř metod té třídy. I kdyby nějaká metoda konstruovala neexistující třídu, problém nastane až při volání té konkrétní metody... a pokud by se ta metoda nikdy nezavolala, projde to podle mě bez chyby. |
||
Mastodont Profil |
#16 · Zasláno: 23. 3. 2009, 14:18:20
Aby třeba ve třídě A se používala metoda co je ve třídě B a naopak?
Můžeš ty objekty provázat tak, aby o sobě věděly a volaly navzájem metody druhého objektu, ale vždy to bude metoda příslušného objektu - prohazovat si je nemohou. |
||
Loopeň Profil * |
#17 · Zasláno: 23. 3. 2009, 14:44:51
OK - díky všem. Zkusím pár pokusů a kdybych narazil, tak ještě napíšu.
|
||
Časová prodleva: 15 let
|
0