| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 17.01.08 Prihlásený: 24.09.20 Príspevky: 27 Témy: 7 |
Mam taku, dufam, jednoduchu otazocku.
Predstavte si, ze mate takuto strukturu...
Kód: class alfa { function a() { // bla bla } }
class beta extends alfa { function b() { // bla bla } function c() { // bla bla } function d() { // bla bla } }
class gama extends beta { function test() { // bla bla } }
Takto nejako vyzera struktura (velmi zjednodusena) toho s cim pracujem. Pricom class alfa je rootovska trieda. Prisiel som do stadia, kde "class gama" je len plugin, ktory rozsiruje "class beta". Je mi jasne, ze na to aby som zavolal metodu test musim napisat: Kód: $gama = new gama(); $gama->test();
Gama, ma vsetky metody tried, ktore rozsiruje.. to je jasne. Ale kedze gama je len plugin, snazim sa prist na sposob, ktory by mi dovolil zavolat metodu test z triedy "beta". Cize inak povedane, aby trieda "beta" mala aj metody z gamy. Snad som sa vyjadril zrozumitelne Kód: $beta = new beta(); $beta->test();
Musi sa to momentalne rozdelit na pluginy, kedze 4000 riadkov je dost neprehladnych, najme ak na jeden projekt stacia 2 funkcie a iny 20, atd.
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 21.03.2010 19:52 | |
|
Tu máš takú srandičku, keď som ja toto riešil. Tiež z hodou náhod dnes
Kód: <?php abstract class dusa{#tato trieda moze byt prazdna.. function pl(){ echo 'citenie'; } } $lastclass = 'dusa'; $Dir = './plugins/'; $Plugins = scandir($Dir); unset($Plugins[0], $Plugins[1]); foreach($Plugins as $Plugin){ require $Dir.$Plugin; eval($toeval); }
$toeval = <<<EOT class clovek extends $lastclass{ EOT; $toeval .= <<<'EOT' #sem das obsah tvojej hlavnej triedy } EOT; eval($toeval);
$c = new clovek; $c->pl(); #citenie $c->pl1(); #rozmyslanie $c->pl2(); #chodenie ?> v priečinku plugins už budeš mať príslušné triedy plugin1.php Kód: <?php $toeval = <<<EOT abstract class hlava extends $lastclass{ EOT; $toeval .= <<<'EOT' function pl1(){echo 'rozmyslanie';}} EOT;
$lastclass = 'hlava'; ?> plugin2.php Kód: <?php $toeval = <<<EOT abstract class nohy extends $lastclass{ EOT; $toeval .= <<<'EOT' var $Funkcia = 'chodenie'; function pl2(){echo $this->Funkcia;}} EOT; $lastclass = 'nohy';
?> neviem, či je to práve najšťastnejšie riešenie, ale malo by správne fungovať. Kódy do evalu môžeš dávať aj normálne do stringu medzi apostrofy, ale potom ti nebude syntax zvýrazňovať editor... Ja by som skôr chcel niečo typu Kód: $HlavnaTrieda->NazovPluginu->funkciaPluginu();
lenže v triedach nie som ešte zabehnutý, takže neviem ako na to :/
_________________ Sorry za prelkepy |
|
Registrovaný: 17.01.08 Prihlásený: 24.09.20 Príspevky: 27 Témy: 7 |
Diky az odpoved.
A rozmyslal som ci tam napisem, ze abstraktne classy nemozem pouzit Vzhladom na to ako funguje framework, tak to nie je mozne, vyriesil som to nakoniec vylepsenim inej casti frameworku
P.S. a eval naozaj nie je dobre pouzivat
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 22.03.2010 21:06 | |
|
ked nemozes vyuzivat abstraktne, tak to jednoducho daj prec a hotovo.
preco nie je dobre pouzivat eval?
_________________ Sorry za prelkepy |
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| MicroSDHC class 2 alebo class 4 mám vrátiť ? v Pamäte | 3 | 667 | 16.12.2010 20:09 majky358 | | extend rank color v Redakčné systémy | 9 | 632 | 30.03.2007 10:22 Flety | | Extend rank color v Redakčné systémy | 10 | 891 | 16.02.2007 20:55 sadam | | PREKLAD: Extend merge CZ v Redakčné systémy | 0 | 2620 | 12.11.2006 16:55 JanoF | | alternativne metody chladenia v Chladiče a všetky druhy chladenia | 11 | 717 | 12.03.2009 16:52 tommy1104 | | Java - spustenie metódy len na určitý čas v Assembler, C, C++, Pascal, Java | 1 | 473 | 09.11.2009 23:19 stopa27 | | Staticke metody v OOP a kedy ich pouzit v PHP, ASP | 1 | 701 | 28.12.2010 18:47 Forty- | | C++ Preťaženie metody pri dedení - mám to dobre? v Assembler, C, C++, Pascal, Java | 10 | 589 | 08.03.2017 19:04 globalik | | class PHPMailer v PHP, ASP | 3 | 318 | 30.09.2012 12:19 shaggy | | User Class v Redakčné systémy | 3 | 509 | 06.07.2007 7:02 masterdead | | C++ class v Assembler, C, C++, Pascal, Java | 16 | 1169 | 13.11.2010 12:32 ado21 | | User Class v Redakčné systémy | 2 | 480 | 12.03.2007 14:51 koudy | | Delphi class v Delphi, Visual Basic | 1 | 791 | 10.09.2009 16:35 Fico | | dekompilaccia class v Assembler, C, C++, Pascal, Java | 1 | 669 | 05.11.2007 9:04 sento | | User Class - help v Redakčné systémy | 8 | 449 | 08.01.2007 19:09 Leachim | | Verify Class ID v Operačné systémy Microsoft | 0 | 342 | 17.04.2009 0:34 lukas |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|