Autor Zpráva
Farrell
Profil *
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
Obvyklé to není. Většinou se pomocí __autoload() načítají jen ty třídy, které jsou potřeba.
Farrell
Profil *
Děkuji za radu. Taky mi to přišlo divné. Zkusím to přepsat.
Alphard
Profil
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ě.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0