php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.10.2010, 22:13  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard [Erledigt] Korrektes Umgehen mit View bei MVC

Hallo zusammen,

folgende Überlegung beschäftigt mich:

PHP-Code:
$header = new View();
$header->assignTemplate('template/header.tpl');

$model = new XYZ;
$content = new View();
$content->setData($model->getData());
$content->assignTemplate('template/content.tpl');

$footer = new View();
$footer->assignTemplate('template/footer.tpl');

echo 
$header->render();
echo 
$content->render();
echo 
$footer->render(); 
Header sowie Footer sind statisch realisiert. Der Content bekommt, jenachdem wie die $_GET-Parameter aussehen, das entsprechende Model oder Subcontroller (Ich glaube dazu sagt man Actioncontroller?) zugewiesen (In diesem Fall schlichtweg irgendein Model).

Meine Frage ist nun, ob ich vom Prinzip her auf dem richtigen Weg bin oder grundlegende Dinge falsch oder nur in Ansätzen korrekt umsetze. Trotz der Lektüre zahlreicher Beiträge hier im Forum bin ich mir unsicher. Ich dachte mir, ob es nicht möglich ist, die Ausgabe der Seite mit nur einem View-Objekt zu arrangieren. Von der Struktur her ist es zwar ein wenig komplexer, aber man spart sich ein paar Zeilen Code?
Trainmaster ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.10.2010, 23:04  
Neuer Benutzer
 
Registriert seit: 25.10.2009
Beiträge: 23
PHP-Kenntnisse:
Fortgeschritten
Babbsdrebbler befindet sich auf einem aufstrebenden Ast
Standard

Wenn 2 von 3 Seiten statisch sind, warum zur Hölle bindest du sie dann so ein?
Müssen die bei dir extra gerendert werden obwohl sie statisch sind?

Kannst sie doch per normalen include einbinden oder ins Maintemplate miteinbasteln. Sieht schöner aus und geht schneller.

Ein paar Fragen:
1. Wo steht dieses Stück code in deinem Script?
2. Wenn das Stück code nicht gerade ein controller ist, warum gibt das Model dem View Daten?
3. Was willst du machen?
4. Hast du auch mal daran gedacht auserhalb dieses Forums auf Lektürensuche zu gehen?

Schau mal da vorbei, das könnte dir bei der Grundlagenforschung helfen:
http://www.phphatesme.com/archives/category/vortraege/
Babbsdrebbler ist offline   Mit Zitat antworten
Alt 21.10.2010, 23:22  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Dass sowohl Header als auch Footer statisch sind, ist nur vorrübergehend. Beide werden früher oder später dynamische Inhalte enthalten. Aus diesem Grund habe ich sie gleich auf diese Weise eingebunden. Zu deinen Fragen:

1. In der index.php
2. Das Stück Code sitzt im "Frontcontroller" (Anführungszeichen deshalb, weil das momentan noch über eine switch-case Struktur gelöst ist)
3. Ordnung und Struktur in mein Projekt bringen. Momentan habe ich viel HTML zwischen den Zeilen. Soweit es geht habe ich HTML-lastige Passagen in einzelnen Methoden gekapselt, aber auf Dauer ist das keine Lösung.
4. Ja, habe ich. Beispielsweise habe ich mir das APF Framework etwas genauer angeschaut, Tutorials von O'Reilly oder anderen Seiten gelesen. Deinen Link kannte ich noch nicht, vielen Dank.
Trainmaster ist offline   Mit Zitat antworten
Alt 21.10.2010, 23:31  
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:
4. Ja, habe ich. Beispielsweise habe ich mir das APF Framework etwas genauer angeschaut, [..]
Das APF löst die Zuweisung eines Views implizit, bzw. anders formuliert: das APF besitzt mit dem Page-Controller eine Komponente die die View-Verwaltung per inversion of control für dich übernimmt. Du musst dem Page-Controll nur noch sagen, was dein Haupt-Template ist (z.B. dein Seiten-Template) und kannst die übrigen Templates (Header, Footer, ...) dann ganz einfach einbinden.

Eine einfache Seite sieht in etwa so aus:

Code:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      ...
   </head>
   <body>
      <div id="wrapper">
         <div id="header">
            <h1>...</h1>
         </div>
         <div id="navi">
            <core:importdesign
               namespace="***::pres::templates"
               template="navi"
            />
         </div>
         <div id="content">
            <core:importdesign
               namespace="***::pres::templates"
               template="content"
            />
         </div>
         <div id="footer">
            <core:importdesign
               namespace="***::pres::templates"
               template="footer"
            />
         </div>
      </div>
   </body>
</html>
Dabei ist es nicht relevant, ob die eingebundenen Templates statischen oder dynamischen Code enthalten. Im Gegenteil. sofern du später "dynamisieren" möchtest, kannst du das ganz einfach durch hinzufügen von Tags oder Controllern ohne Änderung des Rests nachholen.

Möchtest du an Hand eines URL-Parameters Content ausgeben, so kann das im Template "content.html" über einen eigenen Controller erreicht werden, der die URL analysiert und den entsprechenen Inhalt aus der Datenbank zieht.

Hast du das mal ausprobiert? Ist ganz einfach!
__________________
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 21.10.2010, 23:39  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Ich werde das Gefühl nicht los, dass mir hier jemand etwas verkaufen will

Nein, ich habe das noch nicht ausprobiert. Ich habe mir das Framework lediglich angesehen, aber arbeite damit nicht (noch nicht? ). Allerdings bin ich mir nicht ganz im Klaren, inwiefern mich das in meiner Angelegenheit weiterbringt. Ich habe das Gefühl, dass der Page-Controller in etwa das sein könnte, was ich mit "einem View-Objekt" meine?
Trainmaster ist offline   Mit Zitat antworten
Alt 22.10.2010, 11:39  
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

Hallo Trainmaster,

Zitat:
Ich werde das Gefühl nicht los, dass mir hier jemand etwas verkaufen will
Nein, das möchte ich nicht. Ich habe nur gesehen, dass du das APF erwähnt hast und wollte dir ein paar Informationen dazu geben.

Zitat:
Nein, ich habe das noch nicht ausprobiert. Ich habe mir das Framework lediglich angesehen, aber arbeite damit nicht (noch nicht? ).
Sofern du damit arbeiten möchtest, begrüße ich das natürlich. Nicht nur, weil ich maßgeblich daran beteiligt bin, sondern weil ich vor allem denke, dass es dir wirklich helfen kann.

Zitat:
Allerdings bin ich mir nicht ganz im Klaren, inwiefern mich das in meiner Angelegenheit weiterbringt. Ich habe das Gefühl, dass der Page-Controller in etwa das sein könnte, was ich mit "einem View-Objekt" meine?
Ich denke, das wir verstehen konzeptionell das gleiche darunter. Du hast ein Objekt (beim APF: Page), das alle weiteren Sub-Views (Typ: Document; hier kannst du übrigens unendlich tief schachteln) verwaltet und entsprechend deiner "Konfiguration" aufbaut und ausgibt. Da der Page-Controller (H)MVC unterstützt, kannst du für jedes Template auch einen Controller definieren. Es geht aber auch statisch.
__________________
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 22.10.2010, 12:09  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Ich danke Dir für deine Antworten und damit wäre mein Anliegen soweit geklärt. Meine Überlegungen scheinen demnach nicht ganz verkehrt zu sein und ich werde sie weiterhin verfolgen, zumindest was mein momentanes Projekt angeht. In Zukunft könnte ich mir vorstellen, mit APF zu arbeiten. Das schlanke Auftreten von APF sind mir schon mal sympathisch. Wie sieht es eigentlich mit PDO Unterstützung aus?

Eine Frage bzgl. des APF hätte ich noch: Wie wird bspw. mit E-Mail-Templates umgegangen. Die gehören ja nicht zur unmittelbaren Ausgabe der Webseite, sondern werden direkt innerhalb des Mail-Models verarbeitet, so jedenfalls meine Überlegung. Existiert hierfür ein Art Hilfs-Page-Controller oder wird das über Sub-Views und der entsprechenden Konfiguration gelöst. Ich vemute letzteres?
Trainmaster ist offline   Mit Zitat antworten
Alt 22.10.2010, 12:41  
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

Hallo Trainmaster,

Zitat:
Ich danke Dir für deine Antworten und damit wäre mein Anliegen soweit geklärt.
Gerne!

Zitat:
Wie sieht es eigentlich mit PDO Unterstützung aus?
Das APF implementiert einen eigenen ConnectionManager, der dir Treiber mit verschiedenen Implementierungen läd (MySQL, MySQLi, ...). Für PDO ist aktuell noch keiner implementiert, steht aber in der Roadmap. Es gibt also für dich zwei Möglichkeiten: du schreibst selbst einen (und spendierst diesem dem APF-Release, wenn du möchtest) oder du nutzt PDO direkt in deinen Controllern. Da das APF im Prinzip plain PHP ist, kannst du alls nutzen, was man in einem Script auch nutzen kann.

Zitat:
Eine Frage bzgl. des APF hätte ich noch: Wie wird bspw. mit E-Mail-Templates umgegangen. Die gehören ja nicht zur unmittelbaren Ausgabe der Webseite, sondern werden direkt innerhalb des Mail-Models verarbeitet, so jedenfalls meine Überlegung. Existiert hierfür ein Art Hilfs-Page-Controller oder wird das über Sub-Views und der entsprechenden Konfiguration gelöst. Ich vemute letzteres?
Da der Page-Controller nicht auf das Ausgeben einer Webseite fixiert ist, kannst du diesen auch innerhalb einer Komponente einsetzen, die E-Mails erzeugt und versendet. Der Code hierzu sieht nicht anderes aus als in der Bootstrap-Datei (Beispiel):

PHP-Code:
$mail = new Page();
$mail->loadDesign(...);
$message $mail->transform();
mail(...,$message,...); 
Du kannst den Page-Controller sogar innerhalb eines Controllers dazu nutzen um eine Ausgabe (z.B. für einen Platzhalter) zu erzeugen.
__________________
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
View | Controller | .. wohin mit Errors? d0ne Off-Topic Diskussionen 13 18.10.2010 17:42
cakePHP View Abstraktion Deltachaos Software-Design 6 08.10.2010 15:20
phpdoc view notyyy PHP-Fortgeschrittene 7 07.09.2010 20:12
Model view controll Leberwurstbrot PHP Tipps 2010 14 05.03.2010 18:14
Template System -> View in PHP Floid PHP-Fortgeschrittene 12 22.11.2009 11:58
Zend_Controller_Router_Route routet nach der View boolean PHP-Fortgeschrittene 10 13.08.2009 11:12
View vs. Join dsmcg Datenbanken 8 17.03.2009 07:58
[Erledigt] [MySQL] Stopwords bei Volltextsuche umgehen JudGer Datenbanken 1 09.10.2008 21:32
View für Daten eines anderen Servers? freq.9 Datenbanken 6 17.11.2006 11:39
View Spaltennamen tas Datenbanken 3 28.08.2006 14:16
JS-Codesperre umgehen King2k HTML, Usability und Barrierefreiheit 8 29.10.2005 11:14
upload_limit der php.ini umgehen? PHP Tipps 2005-2 12 02.08.2005 20:05
register_globals=off - wie umgehen? PHP Tipps 2005 14 11.04.2005 12:50
Copy() uploadsperre umgehen???? PHP Tipps 2005 14 09.02.2005 16:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zend_controller_router_route \switch case\, mvc php \template view\, php mvc \new view\, mvc php controller für header und footer, mvc view template php implementation, php mvc view template, view-source:https:// seiten umgehen, mvc php view template, new

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