php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.11.2008, 21:48  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Denkanstoss: CommandResolver | Objekte untereinander kommunizieren lassen

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 $requestResponse $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
moveax1 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.11.2008, 21:51  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wird Smarty einzig darüber verwendet? Dann könntest Du eine statische Klassenvariable von DefaultTemplateCommand verwenden. Ansonsten eine SmartyZugriffsklasse mit statischen Methoden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 04.11.2008, 21:54  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Also ich möchte die Ausgabe im CMS nur über Smarty und Xajax regeln je nachdem welcher Command Parameter reinkommt wird es halt entsprechend gehandhabt.

Deswegen wollte ich Smarty auch nur in den Commands nutzen um den Inhalt aus den Templates zu "fetchen" und an das Response Objekt weitergeben.

Aber wie Frage ich dann zum Beispiel aus dem Command ein Datenbank Objekt ab? Muss ich das dann auch dem Command übergeben? Oder innerhalb des Commands instanzieren?
moveax1 ist offline   Mit Zitat antworten
Alt 04.11.2008, 21:56  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Letzteres würde ich sagen. Sinnvollerweise das DBO als Singleton, dann ist das ganz einfach.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 04.11.2008, 21:58  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Ok dann werde ich das ganze erstmal so umsetzen.

Danke für den Rat.

Die Fragen kamen auch nur auf, da ich Abhängigkeiten zwischen den einzelnen Objekten möglichst vermeiden wollte, aber gerade geht mir das Licht auf, das diese ja austauschbar sind da ich eh gegen Interfaces Programmiere

Ich kennzeichne den Thread dann mal als Erledigt
moveax1 ist offline   Mit Zitat antworten
Alt 05.11.2008, 08:38  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

[MOD] verschoben. Hat nun wirklich nix mit einer Anfängerfrage zu tun.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
commandresolver, php commandresolver, html objekte untereinander, smarty zugriff auf statische klassenvariablen, php objekte funktionen untereinande kommunizieren, javascript global per smarty, php seiten untereinander kommunizieren, mit smarty auf statische objekte zugreifen, commandresolver php, http://www.php.de/php-fortgeschrittene/48740-erledigt-denkanstoss-commandresolver-objekte-untereinander-kommunizieren-lassen.html, command resolver pattern, php globale an xajax weitergeben, smarty xajax klassen, xajax smarty

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum