Hallo zusammen,
ich befass mich seit kurzem mit Design Patterns und habe mir einen FrontController Aufbau mit Hilfe des Buches PHP Design Patterns zusammengestellt. Jetzt möchte ich den CommandResolver verschieden Commandos verarbeiten lassen und diese wahlweise per Smarty oder Xajax ausgeben lassen.
Nun ist meine Frage wie kann ich das ganze am besten lösen? Momentan hole ich mir Smarty und Xajax noch als globale Variablen in die Klasse, was ich aber als sehr unschön empfinde. Mein nächster Gedanke war Smarty und Xajax in einer Registry Klasse abzulegen aber das wäre im Prinzip das Gleiche wie eine globale Variable.
Welche Ansatzpunkte gebe es da noch?
Hier ein Beispiel eines Commands aus meinem CommandResolver:
PHP-Code:
class DefaultTemplateCommand implements Command {
public function execute(Request $request, Response $response) {
global $smarty;
global $xajax;
$smarty->assign("xajax_javascript",$xajax->getJavascript());
$sql = mysql_connect('localhost', 'myxajaxcms', 'myxajaxcms');
$sql = mysql_select_db('myxajaxcms');
$menu_query = 'SELECT Page_Menu_Title FROM CMS_Pages WHERE Page_Menu_Parent = "0"';
$menu = mysql_query($menu_query);
$menu_html = '';
while($menu_element = mysql_fetch_array($menu))
{
$menu_html .= $menu_element['Page_Menu_Title']."<br/>\n";
}
$smarty->assign("menu", $menu_html);
$content = $smarty->fetch("index.tpl");
$response->write($content);
}
}
Das hier soll mein default Command sein welches ausgeführt wird, wenn kein passender cmd Parameter übergeben wird.
Die SQL Abfragen usw werden natürlich auch noch ausgelagert, aber irgendwie ist mir momentan unklar wie ich die einzelnen Objekte (hier Commands und Ausgabe) am besten miteinander Kommunizieren lasse.
vielen Dank im voraus
gruss
moveax