Ik heb dit frontcontroller script gebruikt voor rond mijn mvc scripts.
http://www.pfz.nl/wiki/frontcontroller/

Het handige is dat hij via de url de juist controller opvraagt maar op sommige momenten wil ik 2 controllers opvragen.
Is het dan een juist manier dat ik hier een hoofd controller van maak en deze 2 controller in de hoofdcontroller oproep?

Of hoe kan ik dit oplossen?
Alvast bedankt.
Wat bedoel je met "Het handige is dat hij via de url de juist controller opvraagt maar op sommige momenten wil ik 2 controllers opvragen."

Kun je een concreet voorbeeldje geven?
Dat is echt een vrij afgrijselijke frontcontroller, waar je niet echt veel aan hebt...
Pim - op 07/02/2011 16:09:51

Dat is echt een vrij afgrijselijke frontcontroller, waar je niet echt veel aan hebt...


Leg eens uit waarom.
- De FC mist elke vorm van abstractie en modulariteit, waardoor hij op een veel te beperkte manier gebruikt kan worden.
- dispatch() wordt door de constructor aangeroepen
- Parameters kunnen niet worden gebruikt door de controller. (Wel via query parameters, maar die probeer je juist niet te gebruiken)
- Prettige foutafhandeling. Niet eens een 404 header

EDIT: Hoezo moet dat uitgelegd worden eigenlijk? ;)

Hoezo moet dat uitgelegd worden eigenlijk? ;)

Karl is pro in 'normaal' PHP maar volgens mij op het OO gebied nog niet bijzonder pro, of heb ik dat mis karl? (niet lullig bedoeld overigens hoor ;-))

@Niels

Je wilt een soort 'BaseController' ? Of begrijp ik je nu weer verkeerd?

Wil je dat wel dan is het toch heel simpel?

<?php

class BaseController extends FrontController {

protected $db;
public function __construct() {
$this->db = '...';
}
}

class IndexController extends BaseController {
public function __construct() {
parent::__construct();
}

public function foo() {
$this->db->startTransaction(
$this->db->select(
// Weet ik vuul wat nog meer
)
)
}
}
Niels Kieviet op 07/02/2011 19:09:40


Hoezo moet dat uitgelegd worden eigenlijk? ;)

Karl is pro in 'normaal' PHP maar volgens mij op het OO gebied nog niet bijzonder pro, of heb ik dat mis karl? (niet lullig bedoeld overigens hoor ;-))


Dat valt wel mee.
Had het alleen heel snel doorgekeken, omdat ik met wat anders bezig was dus was wel benieuwd. Zag namelijk wel bekende onderdelen ;-)
Niels toch...
Waarom zou een controller de frontcontroller uit moeten breiden? Dat zijn toch hele andere taken?

Ik denk dat de TS iets als dit bedoelt:
<?php
class FrontController {
public function route($query) {

// Routing

return $this->dispatch($controller, $action, $params);
}

public function disptach($controller, $action, $params = array()) {
$c = new $controller($this);

// Gebruik de parameters als argumenten bij de action
return call_user_func_array(array($c, $action), $params);

// Checks buiten beschouwing gelaten
}
}

abstract class Controller {
protected $frontController;

public function __construct(FrontController $fc) {
$this->frontController = $fc;
}

protected function _callSubController($controller, $action, $params = array()) {
return $this->frontController->dispatch($controller, $action, $params);
}
}
?>
Pim - op 07/02/2011 20:02:31

Niels toch...
Waarom zou een controller de frontcontroller uit moeten breiden? Dat zijn toch hele andere taken?
(...)


Kijk... Daar heb ik ook alweer overheen gelezen.

Reageren