Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.01.08
Prihlásený: 24.09.20
Príspevky: 27
Témy: 7
Príspevok NapísalOffline : 20.03.2010 15:30

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 :lol:

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.

:)


Offline

Užívateľ
Užívateľ
Metody a class extend

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 21.03.2010 19:52

Tu máš takú srandičku, keď som ja toto riešil. Tiež z hodou náhod dnes :D

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
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 17.01.08
Prihlásený: 24.09.20
Príspevky: 27
Témy: 7
Príspevok Napísal autor témyOffline : 21.03.2010 21:12

Diky az odpoved.

A rozmyslal som ci tam napisem, ze abstraktne classy nemozem pouzit :P 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 :)


Offline

Užívateľ
Užívateľ
Metody a class extend

Registrovaný: 26.12.06
Prihlásený: 16.11.19
Príspevky: 3971
Témy: 181
Bydlisko: Nitra / Bra...
Príspevok NapísalOffline : 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
Odpovedať na tému [ Príspevkov: 4 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. MicroSDHC class 2 alebo class 4 mám vrátiť ?

v Pamäte

3

667

16.12.2010 20:09

majky358 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. extend rank color

v Redakčné systémy

9

632

30.03.2007 10:22

Flety Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Extend rank color

v Redakčné systémy

10

891

16.02.2007 20:55

sadam Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PREKLAD: Extend merge CZ

v Redakčné systémy

0

2620

12.11.2006 16:55

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. alternativne metody chladenia

v Chladiče a všetky druhy chladenia

11

717

12.03.2009 16:52

tommy1104 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - spustenie metódy len na určitý čas

v Assembler, C, C++, Pascal, Java

1

473

09.11.2009 23:19

stopa27 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Staticke metody v OOP a kedy ich pouzit

v PHP, ASP

1

701

28.12.2010 18:47

Forty- Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. 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 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. class PHPMailer

v PHP, ASP

3

318

30.09.2012 12:19

shaggy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. User Class

v Redakčné systémy

3

509

06.07.2007 7:02

masterdead Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ class

v Assembler, C, C++, Pascal, Java

16

1169

13.11.2010 12:32

ado21 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. User Class

v Redakčné systémy

2

480

12.03.2007 14:51

koudy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Delphi class

v Delphi, Visual Basic

1

791

10.09.2009 16:35

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. dekompilaccia class

v Assembler, C, C++, Pascal, Java

1

669

05.11.2007 9:04

sento Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. User Class - help

v Redakčné systémy

8

449

08.01.2007 19:09

Leachim Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Verify Class ID

v Operačné systémy Microsoft

0

342

17.04.2009 0:34

lukas Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra