Autor Zpráva
mila
Profil
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
Nevim jestli myslis neco takoveho:




<?php
$typ = 'SQLite';
$host = 'localhost';
$uzivatel = '';
$heslo = '';
$databaze = 'oop';

function Factory($typ,$host,$uzivatel,$heslo,$databaze){
if($typ == 'MySQL'){
return new MySQL($host,$uzivatel,$heslo,$databaze);
}else if($typ == 'SQLite'){
return new SQLite($databaze);
}else{
return FALSE;
}
}

?>


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
...tohle jsem se jen uklik....
mila
Profil
Zatím to funguje přiblužně takto:


class foo {
public static function factory ($class) {
// tady nejake includy
$classname = 'yyy'.$class.'xxx'; //vznikne nejak z class a dalsich nastaveni
$obj = new $classname;
//tady nejake kontroly
return $obj;
}
}


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
Tak mozna by to slo nejak takto:

class foo {
public static function factory ($class,$pole) {
// tady nejake includy
$classname = 'yyy'.$class.'xxx'; //vznikne nejak z class a dalsich nastaveni
$obj = new $classname ($pole);
//tady nejake kontroly
return $obj;
}
}


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
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.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0