Hallo,
ich schreibe derzeit ein Projekt in PhP. Normalerweise bin ich eher von der JAVA und C# Seite und da wird das MVC Pattern etwas anders behandelt.
Soweit so gut, ich habe mir einen FrontController geschrieben, weil ich zu jeder View einen eigenen Controller haben will und nicht den einen großen Controller:
Jeder Controller gehört dabei wie gesagt zu einer View und ist von der BaseController Klasse abgeleitet, die eigentlich nix macht außer die run() Methode vorgeben und 2 Member speichern.
Die Frage ist nun, ob das optimal gelöst ist oder ob es schönere Wege gibt.
Gerade die übergabe der page gefällt mir iwie nicht sonderlich.
Weiter wurde mir gesagt, dass der Zugriff auf die Datenbank von den Modelklassen geregelt wird. Ich finde auch das nicht schön und habe wie in JAVA DAO Klassen dafür geschrieben. Vielleicht hat aber jmd von euch noch bessere Anregungen...
Vielen Dank schonmal im Voraus!
Lg
Alex
ich schreibe derzeit ein Projekt in PhP. Normalerweise bin ich eher von der JAVA und C# Seite und da wird das MVC Pattern etwas anders behandelt.
Soweit so gut, ich habe mir einen FrontController geschrieben, weil ich zu jeder View einen eigenen Controller haben will und nicht den einen großen Controller:
PHP-Code:
<?php
class Controller {
private static $sInstance = null;
private $controllerPath;
private $controller;
private $configObject;
public static function getInstance() {
if(self::$sInstance==null) {
self::$sInstance = new Controller();
}
return self::$sInstance;
}
public function __construct() {
$this->controllerPath = $configObject->webroot."/controller/";
spl_autoload_register("Controller::autoload");
include_once($this->webroot."/lib/AutoLoader.php");
initConfigurationObject();
}
private function initConfigurationObject() {
$configObject = ConfigDAO::getConfigurations();
}
public static function autoload($pClass) {
AutoLoader::getInstance($configObject->webroot);
}
public function go() {
$this->controller = $_GET['page']."Controller";
$this->controllerPath.= $_GET['page']."Controller.php";
require_once($this->controllerPath);
if(!file_exists( $_SERVER['DOCUMENT_ROOT'].$this->controllerPath)) {
throw new Exception("COULD NOT FIND CONTROLLER PATH ".$this->controllerPath);
}
if(!class_exists( $_SERVER['DOCUMENT_ROOT'].$this->controller,true)) {
throw new Exception("COULD NOT FIND CONTROLLER CLASS ".$this->controller);
}
$controller = new $this->controller($this->configObject->webroot, $_GET['action'], $configObject);
$controller->run();
}
}
?>
Die Frage ist nun, ob das optimal gelöst ist oder ob es schönere Wege gibt.
Gerade die übergabe der page gefällt mir iwie nicht sonderlich.
Weiter wurde mir gesagt, dass der Zugriff auf die Datenbank von den Modelklassen geregelt wird. Ich finde auch das nicht schön und habe wie in JAVA DAO Klassen dafür geschrieben. Vielleicht hat aber jmd von euch noch bessere Anregungen...
Vielen Dank schonmal im Voraus!
Lg
Alex
Kommentar