Написал роутер:
class App
{
private $fileOrderManager;
private $pageManager;
private $routes = [
'/' => 'getIndex',
'/admin' => 'getAdminPage',
'/order' => 'save'
];
function __construct($fileOrderManager,$pageManager)
{
$this->fileOrderManager=$fileOrderManager;
$this->pageManager= $pageManager;
}
public function run()
{
$path = parse_url($_SERVER['REQUEST_URI']);
$method = $this->routes[$path['path']] ?? 'getIndex';
if(!method_exists($this, $method)) {
return; // throw exception
}
$this->$method();
$this->pageManager->getIndex();
$this->pageManager->getAdminPage();
$this->fileOrderManager->save();
//$this->fileOrderManager->list();
}
}
Что очевидно, в таком виде оно метод не находит, срабатывает условие method_exist и возвращает из функции. Как мне прописать, что бы вызвать методы из классов ($this->pageManager->getIndex(); и тп)?
Спасибо!
Как и сказанно - название методов не соответсвуют тому, что находиться в $routes.
Роутер, как оказалось, должен иметь метод ,который обращаеться к методам менеджеров (Менеджер ДБ, и т.д). Т.е. Метод getIndex у роутера должен обращаться к менеджеру страниц pageManager и у него вызвать соответственный метод getIndex()
то есть , выходом было:
function getIndex() { $this->pageManager->getIndex(); }
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости