Написал роутер:
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(); }
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Поиск выводит только полное совпадение в ячейке, не могу найти как искачь по части иекста (например 4-5 символов и чтобы нашло все ячейки в которых...
Сделал по данному примеру https://gostashit/ru/stashes/1533-podklucenie-k-serveru-websocket-iz-web-prilozenia Сервер запускается,