Autor | Zpráva | ||
---|---|---|---|
mila Profil |
#1 · Zasláno: 18. 1. 2006, 14:06:00
To v nadpisu nefunguje.
Buď můžu totiž volat metodu objektu, ten ale ještě nemám, chci ho vytvořit, nebo statickou fuknci nějaké třídy, ale to konstruktor být nemůže. Neboli, nevíte jak vytvořit factory, která bude konstrukoru předávat parametry, jejichž počet není předem znám? Aby foo::factory ('bar','parametr'); vytvořilo objekt bar, s parametrem 'parametr', ale také foo::factory ('baz','parametr','parametr','parametr','parametr','parametr'); vytvořilo objekt baz, kde class bar { __construct ($param) { ... } } class baz { __construct ($param,$param,$param,$param,$param) { ... } } díky |
||
bitbit Profil |
#2 · Zasláno: 18. 1. 2006, 14:22:11
Nevim jestli myslis neco takoveho:
Ale pokud to myslis tak, ze nebude pocet promennych omezen, nebo nebudes znat jejich maximalni pocet, tak bych je vsechny ulozil do pole, ktere bych predaval Factory a tam je pomoci cyklu dostal zpet a pouzil. -- ale nezkousel jsem nic podobneho, takze nevim jestli to pujde, samozrejme uvnitr factory musis nejdrv zkontrolovat jestli je to pole nez ho budes vubec rozpitvavat. |
||
mila Profil |
#3 · Zasláno: 18. 1. 2006, 15:57:53 · Upravil/a: mila
...tohle jsem se jen uklik....
|
||
mila Profil |
#4 · Zasláno: 18. 1. 2006, 16:04:24
Zatím to funguje přiblužně takto:
Chtěl bych, aby tam bylo něco jako $obj = new $classname ($p1, $p2, ...) kde $p1..$pn budou druhe a dalsi vstupni hodnoty te factory |
||
bitbit Profil |
#5 · Zasláno: 19. 1. 2006, 13:26:11 · Upravil/a: bitbit
Tak mozna by to slo nejak takto:
a pak v kazdy tride, ktery budes s toho factory volat, rozeberes pole a pouzijes jednotlivy promenny. Pokousim se udelat to uz ve factory, ale jeste se mi to uplne nepovedlo |
||
mila Profil |
#6 · Zasláno: 19. 1. 2006, 14:28:16
Není problém fukcí
func_get_args() dostat pole ze vstupu fce, který není předem znám. Ale jak ho předat tomu konstruktoru? Ten nečeká na jedno pole, ale na 0..n hodnot. |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0