Teneinde mijn inzicht in het gebruik en de werking van een MVC-framework te verdiepen, heb ik de volgende link gevonden:
https://medium.com/@noufel.gouirhate/create-your-own-mvc-framework-in-php-af7bd1f0ca19
Dit ervaar ik als een goed artikel dat mijn inzicht weer een stukje verder brengt. Aldus besluit ik het bijbehorende project te downloaden en aan een nader onderzoek te onderwerpen. Ik vind de link hier:
https://github.com/ngrt/MVC_todo
Tot zover gaat alles goed. Maar als de dispatcher de betreffende controller moet starten en argumenten overdragen loop ik vast, graag een zetje in de goede richting?
De gebruikte url is:
Router url: /mvc/dog/bark/hiaaah
In de dispatcher gaat het om deze code:
$controller = $this->loadController();
echo '<p>Dispatcher-controller: </p>';
echo '<pre>';
echo print_r($controller);
echo '</pre>';
Output:
Dispatcher-controller:
dogController Object
(
[vars] => Array
(
)
[layout] => default
)
1
echo '<p>Dispatcher-request-action: '.$this->request->action.'</p>';
Output:
Dispatcher-request-action: bark
echo '<p>Dispatcher-request-params: </p>';
echo '<pre>';
echo print_r($this->request->params); // This is already an array()!
echo '</pre>';
Output:
Dispatcher-request-params:
Array
(
[0] => hiaaah
)
1
Conclusie: ik heb alle parameters voor overdracht naar de controller op orde.
Dan nu dit statement:
call_user_func_array([$controller, $this->request->action], $this->request->params);
Tot zover de code in de dispatcher.
In de controller heb ik de volgende code:
Class dogController extends Controller
{
function dog($bark, $sound)
{
echo '<p>Class dogController method: '.__METHOD__. "() hond: $bark en huilt: $sound </p>”;
}
} // Class dogController
Maar deze output krijg ik niet. Voorlopige conclusie; het statement in de dispatcher:
call_user_func_array([$controller, $this->request->action], $this->request->params);
lijkt niet te werken.
Wat doe ik hier fout?
2.034 views