php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.12.2011, 21:23  
Erfahrener Benutzer
 
Registriert seit: 26.11.2008
Beiträge: 264
dsentker befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Hierzu präferiere ich, dass die View-relevante Logik so gekapselt ist, dass sie vom Controller nur noch angestossen werden muss [...]
Das schließt aber auch das Zuweisen von Variablen an die Templates ein, oder? Das "nur noch anstoßen" ist ja die Lösung, die einen gewissen Teil von Logik (und sei es mal nur das Iterieren) in das Template selbst verfrachtet - oder in der von mir zur Diskussion gestellten "View Bridge".

PHP-Code:
Steuerst du komplett vom Controllerbist du an Vererbung (Mehrfachvererbung gibt es in PHP nicht!) und komische Konstrukte wie Traits für die Wiederverwendung gebunden
Was spricht dagegen, sein Layout in Bereiche zu kapseln? Es muss ja nur einmal ein "HauptLayout" erstellt werden, und Kindsklassen können dann das überschreiben, was in ihren Bereich fällt. Die allgemeine Layout-View sieht dann etwa so aus:

PHP-Code:

public function construct() {
    
// Allg. Zuweisungen
    
$this->headSrc 'foo.jpg';
}

public function 
renderHeader() {
   
$this->template->getNode('#banner')->setAttr('src'$this->headSrc);
}

public function 
renderContent() {
    
$this->template->getNode('.left')->setHTMLContent('Hallo!');
    
$this->template->getNode('.right')->setHTMLContent('Neueste Posts...');
}

public function 
renderSidebar() {
     
//....
}

public function 
renderFooter() {
   
// ....

In dem Controller "Auth" beispielsweise ruft die Action "login" dann die ViewBrdige "loginView" auf. Diese erbt von der o.g. Klasse und überschreibt die relevanten Dinge:
PHP-Code:
class LoginView extends HauptLayoutWasIchObenGepostetHabe {
    public function 
renderContent() {
        
parent::renderContent(); 
        
$this->template->getNode('.left')->setHTMLContent(new self('FormularFuerLogin')); // Verschachtelung..
    
}

Wirklich ausgereift ist das noch nicht (!), aber so oder so ähnlich könnte man Templates komplett ohne interne Logik erstellen. Auf diese Weise können Einzelne Views CSS- oder JS-Komponenten registrieren lassen und diese dann in der obersten Ebene einbinden lassen.
__________________
dsentker ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.12.2011, 21:55  
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

Zitat:
Das schließt aber auch das Zuweisen von Variablen an die Templates ein, oder? Das "nur noch anstoßen" ist ja die Lösung, die einen gewissen Teil von Logik (und sei es mal nur das Iterieren) in das Template selbst verfrachtet - oder in der von mir zur Diskussion gestellten "View Bridge".
Meine Vorgehensweise (siehe APF) schließt das Füllen von Platzhaltern in Controllern explizit ein. Insofern ist eine View Bridge hier ebenfalls überflüssig, da die View-Komponente die Ausgabe daraus entsprechend generieren kann. "Views ohne Logik" ist ja keine Forderung nach einer "dummen" View, sondern einer View ohne Business-Logik! Die "dumme" Generierung von HTML aus dem Wert eines Platzhalter ist dabei völlig legitim.

Zitat:
Was spricht dagegen, sein Layout in Bereiche zu kapseln? Es muss ja nur einmal ein "HauptLayout" erstellt werden, und Kindsklassen können dann das überschreiben, was in ihren Bereich fällt. Die allgemeine Layout-View sieht dann etwa so aus:
Dieser Ansatz sieht sehr nach ZF, CakePHP & Co. aus, da diese kein mehrschichtiges MVC unterstützen. Hier bist du gezwungen, Abhängigkeiten von View-Bausteinen oder Bereichen deiner Applikation in deinem konkreten Controller aufzulösen. Beispiel: dein Controller für den Content-Bereich muss auch das Menü und den Header und den Footer darstellen. Exakt diese Vorgehensweise bildet dein Controller-Beispiel ab und verletzt damit das SoC (separation of concerns) Paradigma.

Umgekehrt formuliert: du möchtest dich in deiner Login-Komponente nicht auch noch im das Menü, den Footer o.ä. kümmern, denn das ist Aufgabe der Navigation und des Footers etc.
__________________
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
Alt 28.12.2011, 16:09  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von dr.e. Beitrag anzeigen
Wir sprechen doch von MVC - korrekt?
In gewisser Weise schon, das ist korrekt. Allerdings bin ich nach wie vor anderer Meinung. Um nochmals auf dein Beispiel einzugehen argumentiere ich damit, dass das Listen von Gruppen und Rollen nicht zwangsläufig eine Controller-Aktion sein muss. Spätestens dann, wenn auf der Website an mehreren Stellen die "Liste Gruppen und Rollen"-Funktionalität benötigt wird, ist das für mich ein Fall für die Service-Schicht. Und zur Darstellung von Inhalten für den End-Anwender führt es nur dann, wenn der Controller die entsprechenden Maßnahmen ergreift. Ein exklusives Recht, das nur dem Controller zusteht. Damit würde ich auch im Wesentlichen den Unterschied zwischen Controllern und Services erklären.
Trainmaster ist offline   Mit Zitat antworten
Alt 28.12.2011, 16:14  
archer42
Gast
 
Beiträge: n/a
Standard

Mal ein wenig Off-Topic mein Beitrag.
Hoffe der Thread kann die kurze Nebenfrage (er)tragen.

Ich verstehe persönlich eigentlich nicht, wieso ein Designer da überhaupt an den CSS/HTML Code rangeht/ranmuss?
Ist es nicht sinnvoller, sich von dem Designer eine Photoshopvorlage mit leichter Vorstrukturierung + Farbcodes geben zu lassen und das wird dann einfach vom Programmierer implementiert?

Gruß
  Mit Zitat antworten
Alt 28.12.2011, 16:36  
Erfahrener Benutzer
 
Registriert seit: 26.11.2008
Beiträge: 264
dsentker befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dr. e
Abhängigkeiten von View-Bausteinen oder Bereichen deiner Applikation in deinem konkreten Controller aufzulösen. Beispiel: dein Controller für den Content-Bereich muss auch das Menü und den Header und den Footer darstellen. Exakt diese Vorgehensweise bildet dein Controller-Beispiel ab und verletzt damit das SoC (separation of concerns) Paradigma.

Umgekehrt formuliert: du möchtest dich in deiner Login-Komponente nicht auch noch im das Menü, den Footer o.ä. kümmern, denn das ist Aufgabe der Navigation und des Footers etc.
Ja du hast Recht, rein theretisch sollte es einen Controller für die Navigation geben, einen Controller für den Footer [etc] da jeder dieser Segmente seine eigene Logik enthält (Einfaches Beispiel: Kontaktformular im Footer). Da macht HMVC dann sicherlich Sinn. Ich sollte mich also mehr auf die Aufteilung der Controller konzentrieren und nicht auf die Aufteilung der Aufteilung der Views

Zitat:
Zitat von archer42 Beitrag anzeigen
Ich verstehe persönlich eigentlich nicht, wieso ein Designer da überhaupt an den CSS/HTML Code rangeht/ranmuss?
Ist es nicht sinnvoller, sich von dem Designer eine Photoshopvorlage mit leichter Vorstrukturierung + Farbcodes geben zu lassen und das wird dann einfach vom Programmierer implementiert?
Bei uns läuft es so, manchmal ist sogar der Entwickler gleichzeitig der Designer, er macht alles. Ich kann aber auch die andere Situation nachvollziehen, also das in größeren Unternehmen ein Team das Design erstellt, das andere Team wandelt dies in HTML um und wiederum ein drittes Team ist für die Programmierung zuständig. Ich halte es aber generell für falsch, den Designern zu unterstellen, sie wären zu doof, um PHP-Code in die Templates einzufügen. Damit argumentiert ja auch Smarty:
Zitat:
Zitat von Smarty Webpräsenz
[...]No PHP knowledge is required to manage Smarty templates.[...]
Ob der Designer nun PHP-Basics lernt oder die Smarty-Syntax, ist unerheblich.
__________________
dsentker ist offline   Mit Zitat antworten
Alt 28.12.2011, 17:14  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ich verstehe persönlich eigentlich nicht, wieso ein Designer da überhaupt an den CSS/HTML Code rangeht/ranmuss?
Ist es nicht sinnvoller, sich von dem Designer eine Photoshopvorlage mit leichter Vorstrukturierung + Farbcodes geben zu lassen und das wird dann einfach vom Programmierer implementiert?
Es geht nicht um Designer sondern um WEBdesigner.
Die setzen die psd-Vorlagen in html/css um (und erstellen sie manchmal auch selbst).

Was hat denn das Umsetzen von psd in html/css mit Programmieren zu tun ?

Ich kenn Programmierer die können wunderbar Datenbanken designen und Ablaufdiagramme erstellen,
erzeugen aber jämmerlich miesen html/css-Code.

Das können doch wirklich Leute besser die sich tagtäglich mit den verschiedenen Browser-Varianten
und deren CSS-Umsetzung herumschlagen.

Zitat:
mit leichter Vorstrukturierung
mein Designer würde mich erschlagen.
Da wird nichts "leicht" vorstrukturiert, sondern pixelgenau vorgegeben.
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist gerade online   Mit Zitat antworten
Alt 29.12.2011, 10:38  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Was hat denn das Umsetzen von psd in html/css mit Programmieren zu tun ?
Früher nichts, heute einiges. Die AJAX Aufrufziele müssen da sein, die Behandlung der Rückgaben, die Trigger für Animationen, etc etc. Entfällt natürlich bei 08/15 Seiten, die keine große Interaktion zwischen Front- und Backend haben.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Template System programmieren Wolf66 PHP Einsteiger 23 20.05.2011 16:43
[Erledigt] Problem mit eigenem Template System! Nickstar PHP Tipps 2010 8 09.07.2010 16:12
Template System Ausgabe Knechtle PHP Tipps 2010 28 09.04.2010 11:04
[Erledigt] Template System Jens P. PHP Tipps 2009 17 04.01.2010 14:00
Template System -> View in PHP Floid PHP-Fortgeschrittene 12 22.11.2009 11:58
Template System Dominik PHP Tipps 2008 3 23.12.2008 09:46
Ausgabe im Template System nicht an vorgsehener Stelle Kein Genie PHP-Fortgeschrittene 7 21.04.2008 23:06
Template System oder Lösung gesucht PHP Tipps 2005 14 21.05.2005 22:07
Template System mit IF PHP Tipps 2005 10 06.05.2005 23:58
Vorschläge für eigenes template system! PHP Tipps 2005 2 14.03.2005 13:44
Template System tutorial PHP Tipps 2005 3 09.02.2005 19:49
Welches Template System? zwelch PHP Tipps 2004-2 1 18.11.2004 09:04
suche ein bestimmtes template system PHP Tipps 2004-2 2 07.11.2004 19:49
Smarty als Template System?! PHP Tipps 2004 16 22.07.2004 11:22
Smarty Template System: If Anweisung? PHP Tipps 2004 2 18.07.2004 19:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
smarty mehrfachvererbung

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:46 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