| 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: 15 let
|
|||
0