2016-02-01 4 views
1

Я создал класс с именем Router что импортировать все контроллер, как это:Match имя контроллера и вызвать определенную функцию

<?php 

include dirname(dirname(__FILE__)) . '\application\controllers\backend.php'; 

class Router 
{ 
    private $_backend; 

    public function __construct() 
    { 
     $this->_backend = new Backend(); 
    } 

    /** 
    * Execute function 
    */ 

    public function submit($controller, $func) 
    { 
     // $this->_backend->index(); 
    } 
} 

?> 

теперь этот класс доступен в моем router.php файл, этот файл будет включен, прежде чем кто-либо другой и я могу получить доступ к классу маршрутизатора в любых PHP файлов по ссылке:

$router = new Router(); 

моя задача вызвать функцию index доступной в backend контроллере импортируемого в router.php файл. В index.php файле у меня есть:

$router->submit('backend', 'index'); 

Как я могу соответствовать имени контроллера и вызвать функцию, передаваемый в качестве параметра с переменной внутри моего Router класса?

ответ

1
<?php 
class Router 
{ 
    public function submit($controller, $func) 
    { 
     // include dynamically the needed file 
     include dirname(dirname(__FILE__)) . '\application\controllers\' . $controller . '.php'; 
     // The classname starts with capital 
     $Class = ucfirst($controller); 
     // create an instance 
     $ctr = new $Class(); 
     // and call the requested function 
     $ctr->$func(); 
    } 
} 
+0

Итак, я не могу импортировать все контроллеры в верхней части класса маршрутизатора и вызвать конкретный контроллер в зависимости от переданного параметра? – Dillinger

+0

вы можете включить все из них вверху и удалить строку include из моего кода – Gavriel

Смежные вопросы