Autor | Zpráva | ||
---|---|---|---|
Farrell Profil * |
#1 · Zasláno: 27. 1. 2011, 18:29:14
Dobrý den,
pracuji na jednom modulárním systému, kde se jako první načtou moduly s jednotlivými funkcemi. Řeším to následovně a chci se zeptat, zda-li je to správné, i když to funguje. Kód samozřejmě ořežu jen na daný problém. index.php class Sys { private $mods = array(); function __construct() { $modules = array("basemodule" => array("file"=>"neco.php")); foreach( $modules as $name => $info ) { include($info["file"]); $this->mods[$name] = $obj_ret; } } public function getChildMod( $name ) { if(is_object($this->mods[$name])) return $this->mods[$name]; return false; } } $sys = new Sys(); neco.php class BaseModule extends Sys { function __construct() { echo "module loaded..."; } public function info() { return "info of basemodule.."; } } $obj_ret = new BaseModule(); |
||
Alphard Profil |
#2 · Zasláno: 27. 1. 2011, 18:46:06
Obvyklé to není. Většinou se pomocí __autoload() načítají jen ty třídy, které jsou potřeba.
|
||
Farrell Profil * |
#3 · Zasláno: 27. 1. 2011, 19:12:15
Děkuji za radu. Taky mi to přišlo divné. Zkusím to přepsat.
|
||
Alphard Profil |
#4 · Zasláno: 27. 1. 2011, 20:53:50
Farrell:
Nějaký Robot Loader má snad každý větší framework. Jsou dva základní přístupy, 1. buď jsou dané jasné vztahy mezi názvem souboru a třídy samotné, podle kterých se z názvu třídy odvodí název souboru a ten se includuje. 2. Nebo script při startu projde všechny zadané adresáře, zjistí si, kde co je (používá se cache), a pak dokáže načíst cokoliv, co se vyskytuje v projektu. Zástupcem druhého je např. RobotLoader z Nette, jestli se nic nezměnilo, jde použít i samostatně. |
||
Časová prodleva: 13 let
|
0