Pozwolę sobie uzupełnić wypowiedź @Patryk27.
Funkcja call
w Twoim tutorialu to taki bardzo prosty FrontController.
Front Controller – jeden ze wzorców projektowych stosowany w projektowaniu aplikacji internetowych. We wzorcu tym istnieje jeden, centralny obiekt (np. Twoja funkcja call
), który zarządza wszystkimi żądaniami przychodzącymi od klienta[1][2]. Wzorzec ten jest często stosowany ze wzorcem architektonicznym MVC.
PHP jest bardzo elastyczny i pozwala Ci wywolać metodę na obiekcie o dynamicznej nazwie. Równie dobrze mógłbyś ten zapis zastąpić switchem:
switch($action) {
case 'customers':
$controller->customersAction();
case 'transactions':
$controller->transactionsAction();
}
Tak samo Twój switch, w którym wybierasz controller możesz zastąpić w ten sposób:
// wersja bez switch:case
$controllerName = "pages";
$actionName = 'edit';
$controllerClass = strtoupper($controllerName) . "Controller";
$action = $actionName . 'Action';
$controller = new $controllerClass(); // klasę również możemy tworzć "ze stringa" - warto sprawdzić czy klasa istnieje i dodać jakiś try catch, ale to jest minimum konieczne
$controller->{$action}();
Kiedyś tłumaczyłem to koledze i na potrzeby tego zaimplementowałem bardzo prosty MVC, możesz sobie pobrać (link) i odpalić ten kod. Wszystko jest mocno pokomentowane. Zacznij od pliku index.php
w katalogu public_html
, a pozniej podążaj za kodem :)