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 07.10.2010, 18:16  
Benutzer
 
Registriert seit: 04.01.2009
Beiträge: 43
Deltachaos befindet sich auf einem aufstrebenden Ast
Standard cakePHP View Abstraktion

Hallo,

Ich bin gerade dabei eine View Abstraktion für cakePHP zu schreiben. Ziel ist das Plugins nur noch eine Struktur als View zur Verfügung stellen und daraus dann der spezielle Code für die Website generiert wird.
Das hat den Sinn das Plugins dann nur noch in Projekte geworfen werfen müssen und sich automatisch an das Design der ganzen Website anpassen.

Die Strukturinformationen möchte ich als XML ablegen.
PHP-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<accordion id="Foobaa">
  <?php foreach($data as $row): ?>
  <entry headline="<?php echo Sanitize::html($row['headline']); ?>">
    <?php echo Sanitize::html($row['content']); ?>
  </entry>
  <?php endforeach; ?>
</accordion>
Dieser View würde nachdem er von cakePHP gerendert wurde nur schematische Daten enthalten und ich könnte ihn parsen und in HTML übersetzen.

Dafür lädt die ViewAl Klasse Plugins die dann die einzelne Tags/Tag Blocks mit dem richtigen HTML ersetzt. Damit das auch zu dem Design der jeweiligen Seite passt haben diese Plugins auch einen View der ganz normal von cake geparsed wird.

Also mache ich eigentlich nur folgendes:
cakePHP Plugins stellen Daten bereit (als XML) -> ViewAl lädt Plugins -> ViewAl Plugins übersetzten strukturieren Daten und übergeben sie an einen -> View. der das erzeugt was an der stelle der Daten stehen soll.

View eines ViewAl Plugins:
PHP-Code:
<div class="accordion">
  <?php foreach($entrys as $entry): ?>
    <h1><?php echo Sanitize::html($entry['attr']['headline']) ?></h1>
    <div><?php echo Sanitize::html($entry['content']) ?></div>
  <?php endforeach; ?>
</div>
Um das ganze flexibel zu halten dachte ich daran in dem View der App die Möglichkeit zu schaffen einzelne Elemente des Plugin Views zu laden jedoch trotzdem auf alle Variablen zugriff zu haben die an den View übergeben werden. Somit kann man von Fall zu Fall Entscheiden ob Teile des Automatisch generiertem Codes genutzt werden oder nicht:

PHP-Code:
<div>
  lalala Statischer Inhalt. Ja ich kann auch die $data variable verwenden:
  $data count: <?php echo count($data); ?>
  Und hier kommt mal ein teil der automatischem Views:
  <?php echo $this->ViewAl->element('Foobaa'?>
</div>
Die Plugins sollen neben dem View für die Strukturellen Informationen auch einen default View für das Layout bereitstellen der als Fallback genutzt wird wenn kein View in der App vorhanden ist.
Aus meinem Beispiel würde dann folglich das entstehen:
PHP-Code:
<div>
  
lalala Statischer InhaltJa ich kann auch die $data variable verwenden:
  
$data count2
  Und hier kommt mal ein teil der automatischem Views
:
  <
div class="accordion">
    <
h1>Foo</h1>
    <
div>FooContent</div>
    <
h1>Baa</h1>
    <
div>BaaContent</div>
  </
div>
</
div
Ich wollte einfach mal Fragen was ihr von der Idee haltet. Verbesserungsvorschläge? Oder ob ihr denkt so etwas ist sinnvoll.

Vielen Dank im voraus!

Geändert von Deltachaos (07.10.2010 um 18:28 Uhr).
Deltachaos ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.10.2010, 20:02  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Ich wollte einfach mal Fragen was ihr von der Idee haltet.
Gar nichts - Das hört sich einfach nach Template-Engine an..

Zitat:
und sich automatisch an das Design der ganzen Website anpassen.
Wie denn das? Die Module wissen doch nichts vom Design Deiner Website. Und wenn Du ihnen das erst beibringen musst, kannst Du gleich richtiges html schreiben, ohne den Umweg über diese Template-Sprache. Sieht mir etwas von APF oder Prado abgekupfert aus. Da werden letztendlich auch nur irgendwelche Tags geparst..
xm22 ist offline   Mit Zitat antworten
Alt 07.10.2010, 21:12  
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

Dazu fallen mir folgende Fragen ein:
  • Warum braucht es ein Plugin um generische View-Strukturen zu bauen?
  • Warum beschränkst du dich auf eine Ebene der View-Abstraktion?
  • Warum nutzt du nicht HTML/CSS um Elemente Design-technisch zu abstrahieren?
  • Warum mischst du HTML- mit PHP-Framenten, die geparst und ausgewertet werden müssen?
Mir scheint die Idee nicht wirklich schlüssig zu sein, gerade im Hinblick, dass es bereits vorhandene und bessere Tools gibt.
__________________
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 07.10.2010, 21:57  
Benutzer
 
Registriert seit: 04.01.2009
Beiträge: 43
Deltachaos befindet sich auf einem aufstrebenden Ast
Standard

Ich habe gerade nochmal etwas überlegt.
Die Plugins geben eine Empfehlung für die Darstellungsart (ob als Liste, Einzelner Beitrag usw) für bestimmte Elemente des Views.
Es gibt ein für jede Darstellungsart ein eigenes Template. Dieses Template wird von der App gestellt ist nicht in den Plugins enthalten und kann auf das Design der App angepasst werden.

Nun lässt sich im View an den Stellen mit einem kurzen Befehl entweder die Empfehlung für die Darstellung nutzen (Das Plugin stellt nur die Daten dafür bereit. Das Design für eine Darstellungsart ist für die ganze App verfügbar) oder man gibt eine eigene Darstellungsart an.

Den Sinn zeige das mal an folgendem Beispiel:

Ich habe zwei Plugins (z.b. Comments und Board) . Das Board Plugin stellt seine Threads als Beiträge dar. Das Comments Plugin seine Comments als Beiträge.

Nun muss nur einmal in der App ein Design für die Beitragsansicht entworfen werden und es wird automatisch von dem Comments und Board Plugin genutzt.
Außerdem sollen die Plugins auch ein Standart Layout für die Anordnung der verschiedenen Elemente bieten.

Die Frage ist wie ich jetzt das jetzt am sinnvollsten aufbaue damit das auch Arbeit erspart.
Ziel ist es eigentlich eine Möglichkeit zu finden Plugins fertig zu machen einfach in das Projekt zu werfen und sie funktionieren einfach ohne an ihnen etwas machen zu müssen.
Deltachaos ist offline   Mit Zitat antworten
Alt 08.10.2010, 09:08  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Jetzt verstehe ich, was Du meinst. Das hört sich gar nicht so schlecht an. Das einzige Problem, das ich sehe ist, dass oft html-Bausteine benötigt werden, die sich aber trotzdem marginal unterscheiden. Und so eine "Beitragsansicht" ist schon so dermaßen speziell, dass sie doch für jede Applikation angelegt werden müsste, wenn sie nicht im Plugin bereits integriert ist.

EDIT: Ein Bsp.: Wie ich es schon im Beruf erlebt habe. Eine gefloatete Liste von Dingen - Einmal mit 3, einmal mit 5 Einträgen pro Zeile. Das sind schon mal in der Umsetzung Unterschiede. Aber vielleicht ließe sich das ja noch lösen. Aber: Was ist, wenn sich die Liste mit 3 Einträgen pro Zeile noch mal unterscheiden lassen können soll? Da beißt sich dann der Hund in den Schwanz - Du könntest zwar immer mehr Ausnahmen hinzufügen, aber das Konzept der Einfachheit wird dann über den Haufen geworfen..

Für rel. einfache Strukturen könnte ich mir das aber durchaus vorstellen.

Geändert von xm22 (08.10.2010 um 09:14 Uhr).
xm22 ist offline   Mit Zitat antworten
Alt 08.10.2010, 14:52  
Benutzer
 
Registriert seit: 04.01.2009
Beiträge: 43
Deltachaos befindet sich auf einem aufstrebenden Ast
Standard

Naja es ziehlt auf sich wiederholende Darstellungsarten ab.
Wenn ein Plugin etwas als Threadansicht darstellen will dann gibt es das Template für die Threadansicht einmal. Die kann dann öfter verwendet werden.
z.b. vom Comments und vom Board Plugin.

Die Plugins stellen kein HTML bereit sondern empfehlen nur eine Art der Darstellung.

Wie dann eine Threadansicht aussieht muss dann einmal in der App festgelegt werden.
Deltachaos ist offline   Mit Zitat antworten
Alt 08.10.2010, 15:20  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.169
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Die Plugins stellen kein HTML bereit sondern empfehlen nur eine Art der Darstellung.
Das ist schon klar. Aber trotzdem wird es darauf hinaus laufen, dass dann für die meisten Module in einer App eine separate Ansicht implementiert werden muss. Das meine ich.
xm22 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
CakePHP oder RubyonRails? elrt PHP Tipps 2010 16 08.10.2010 20:04
phpdoc view notyyy PHP-Fortgeschrittene 7 07.09.2010 20:12
CakePHP: OpenID component einbinden PatrickS Scriptbörse 1 07.06.2010 17:24
CakePHP / PHP MySQL Entwickler aus Leidenschaft gesucht intelliad Gewerblich 1 15.05.2010 21:00
CakePHP schnell? Jens P. PHP Tipps 2010 24 15.03.2010 14:10
Model view controll Leberwurstbrot PHP Tipps 2010 14 05.03.2010 18:14
[Erledigt] mysql - Trigger startet verzögert durch View slanty Datenbanken 14 25.02.2010 21:06
Template System -> View in PHP Floid PHP-Fortgeschrittene 12 22.11.2009 11:58
Kohana Framework / CakePHP / Zend ramses PHP-Fortgeschrittene 6 29.09.2009 01:38
Zend_Controller_Router_Route routet nach der View boolean PHP-Fortgeschrittene 10 13.08.2009 11:12
CakePHP: Views in Views anzeigen bzw. vorrausladen K1ngC0bra PHP-Fortgeschrittene 6 29.07.2009 12:42
View vs. Join dsmcg Datenbanken 8 17.03.2009 07:58
[Erledigt] Memory_limit setzen? (cakePHP) Stephan_87 PHP Tipps 2008 4 04.12.2008 19:13
CakePHP Ordnerstruktur Luka PHP Tipps 2008 1 23.11.2007 18:06
HTML-Tags und CakePHP dr.e. PHP-Fortgeschrittene 20 11.08.2007 14:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cakephp view, cakephp \view in variable laden\, foreach cakephp, cakephp xml erstellen, cakephp xml speichern, cakephp view in view, cakephp aussehen ändern, cakephp zugriff auf data in edit view, wie html und css in cakephp anpassen, cakephp view in variable laden, cakephp view laden, imm view in php code html schreiben cakephp, cakephp wert an view übergeben, zend standartlayout, parameter übergeben vom controller ins view, cakephp bestimmte view verwenden, cakephp view plugin, cakephp variablen view übergeben, cakephp, cakephp eigenes design

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