<?php
class Model_Methods
{
protected $_name = '';
public function __call($name, array $params)
{
$className = "Model_Methods_".$name[0];
$xClass = new $className;
return $xClass->$name($params[0],$aParams[1]);
}
}
Następnie wszystkie metody poupychałem według nazw do klas dziedziczących po powyższej znajdujących się w katalogu Methods w plikach A.php, B.php, C.php itd. aż do Z.php
Przykładowy plik:
<?php
class Model_SeoApi_Methods_T extends Model_Methods {
public function test($aParams, $sFormat)
{
var_dump($aParams);
var_dump($sFormat);
}
}
Tym sposobem uruchamiam metodę Model_Methods::test(), co powoduje, że autoloader zenda dołącza plik Methods/T.php, tworzy obiekt klasy T i uruchamia metodę. Mało tego - działają wewnętrzne odwołania do metod itd. Przy dodaniu __set i __get w klasie bazowej można nawet odwoływać się do wspólnych dla wszystkich metod atrybutów klasy.
0 komentarzy:
Prześlij komentarz