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 11.08.2009, 13:06  
Benutzer
 
Registriert seit: 07.08.2009
Beiträge: 94
PHP-Kenntnisse:
Anfänger
Anyone befindet sich auf einem aufstrebenden Ast
Standard Strukturierung eines Templatesystems

Ich plane zur Zeit ein privates Framework, auf welches ich auch für künftige Projekte zurückgreifen möchte. Allerdings bin ich noch ziemlich neu in Sachen Entwurfsmuster. Ich kenne bereits folgende (Singleton, Factory, Observer, Registry und Dependency Injection [dieses verstehe ich leider immer noch nicht -.-]).

Ich habe mich dafür entschieden, dass ich mein Templatesystem modular aufbauen möchte: Es können jederzeit Plugins installiert / deinstalliert werden. Diese Plugins sollen vor Allem für die "Templatesprache" zuständig sein.

Ich habe mir das mal so gedacht:

Das Subjekt:
PHP-Code:
class Template
{
    private 
$templatePlugins = array();

    public function 
__set($nameTemplatePlugin $plugin)
    {
        
$this->templatePlugins[$name] = $plugin;
    }

    public function 
__get($name)
    {
        return 
$this->templatePlugins[$name];
    }

    public function 
fetchTemplate($templateFile)
    {
        
// ...
        
foreach ($this->templatePlugins As $name => $plugin)
        {
            
$plugin->parse();
        }
    }

PHP-Code:
interface TemplatePlugin
{
    public function 
parse();

Die Listener
PHP-Code:
class TemplateLoopPlugin extends Template implements TemplatePlugin
{
    public function 
parse()
    {
        
// Schleifenfunktionen werden bearbeitet
    
}
}

class 
TemplateLanguagePlugin extends Template implements TemplatePlugin
{
    public function 
parse()
    {
        
// Sprachvariablen werden behandelt
    
}

Ich habe mich an dieser Stelle vorerst für das Observer-Entwurfsmuster entschieden, bin mir aber unschlüssig darüber, ob dieser Weg der richtige ist und ob das überhaupt auf diese Art funktionieren würde.
Anyone ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.08.2009, 14:24  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.245
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Warum erfindet jeder eigentlich das Rad ständig neu? Wieso nicht bestehende ausgereifte Produkte (wie beispielsweise Smarty) integrieren?
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online   Mit Zitat antworten
Alt 11.08.2009, 14:28  
Erfahrener Benutzer
 
Registriert seit: 27.06.2009
Beiträge: 498
PHP-Kenntnisse:
Anfänger
cetalian sorgt für eine eindrucksvolle Atmosphärecetalian sorgt für eine eindrucksvolle Atmosphäre
Standard

Privat kann man ja durchaus mal komplizierte Programme aus Spaß an der Freude entwickeln. So wie der detailverliebte Modelbauer vielleicht gerne selbst einen Bahnhof baut obwohl es die zuhauf für 19.99€ im Laden gibt
cetalian ist offline   Mit Zitat antworten
Alt 11.08.2009, 15:40  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von mepeisen Beitrag anzeigen
Wieso nicht bestehende ausgereifte Produkte (wie beispielsweise Smarty) integrieren?
Oder PHP nehmen!? Nicht wirklich etwas konstruktives zu deinem Problem, aber:

http://www.bastian-frank.de/site/fro...t.php?idart=47
Asipak ist offline   Mit Zitat antworten
Alt 11.08.2009, 15:48  
Benutzer
 
Registriert seit: 07.08.2009
Beiträge: 94
PHP-Kenntnisse:
Anfänger
Anyone befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mepeisen Beitrag anzeigen
Warum erfindet jeder eigentlich das Rad ständig neu? Wieso nicht bestehende ausgereifte Produkte (wie beispielsweise Smarty) integrieren?
Ich kann diese - bereits gängige - Denkweise unter Programmierern nicht verstehen. Was widerspricht einem solchen Vorhaben? Ich kann dir einige Gründe nennen, warum "das Rad neu erfunden" werden könnte:
  1. Spaßfaktor - Man erfreut sich an funktionierenden und den Wünschen entsprechenden Ergebnissen -> man fühlt sich bestätigt.
  2. Lerneffekt - Vielleicht entwickeln sich aus solchen Projekten neue Erkenntnisse und Perspektiven in Hinblick auf Programmierung, Architekturdesign und Strukturierung?
  3. Der Erfahrungswert steigt - mit der Zeit entwickelt sich der "Blick" für professionelle Entwicklung und Vorangehensweise.
  4. Das Projekt wird auf die individuellen Erfordernisse und Voraussetzungen zusammengeschnitten - überschüssige Funktionen entfallen.
  5. Der Entwickler kennt die Tücken, Vorzüge und Nachteile seiner Software besser, als die der unzähligen Frameworks.
  6. Vielleicht entwickeln sich Projekte zu kommerziellen Anwendungen?

Diese Liste besteht nur aus sechs von dutzenden Gründen, wieso und weshalb auch selbstgebaute Anwendungen und Bibliotheken durchaus sinnvoll sein können.


Und ganz nebenbei: Der Sinn, ob und inwiefern ich auf bereits bestehende Frameworks zurückgreifen möchte, steht an dieser Stelle nicht zur Debatte. Ich bin offen für Frameworks, die a) nicht zu überladen sind und b) auf spezifische Anwendungsfälle zugeschnitten sind.

@Aspiak: Ich kenne diesen Artikel bereits und ich kann die Argumente auch bis zum gewissen Grad verstehen. Dennoch sollte jeder individuell entscheiden, ob und inwieweit der Nutzen eines Templatesystems plausibel ist.

Geändert von Anyone (11.08.2009 um 15:52 Uhr).
Anyone ist offline   Mit Zitat antworten
Alt 11.08.2009, 15:52  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.245
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Dann formuliere ich die Frage neu:
Warum erfindet jeder eigentlich das Rad ständig neu? Wieso nicht bestehende ausgereifte Plugin-Systeme aus existierenden Produkten (wie beispielsweise Smarty) anschauen?
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist gerade online   Mit Zitat antworten
Alt 11.08.2009, 15:55  
Benutzer
 
Registriert seit: 07.08.2009
Beiträge: 94
PHP-Kenntnisse:
Anfänger
Anyone befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mepeisen Beitrag anzeigen
Dann formuliere ich die Frage neu:
Warum erfindet jeder eigentlich das Rad ständig neu? Wieso nicht bestehende ausgereifte Plugin-Systeme aus existierenden Produkten (wie beispielsweise Smarty) anschauen?
Ich habe den Sinn und die Funktionsweise von Plugins im Groben erfasst, dennoch dürfen doch Meinung in Bezug auf die Fragestellung eingeholt werden. Oder sehe ich da was falsch? Bekanntlich führen viele Wege nach Rom!
Anyone ist offline   Mit Zitat antworten
Alt 11.08.2009, 16:03  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Tja,

vielleicht sollten wir uns lieber um Anyone's Problem kümmern, bevor das hier noch ausartet. Immerhin befinden wir uns hier im Bereich "Softwaredesign" , da ist so eine "Räder-Diskussion" doch eher fehl am Platz.

Ich kann dir leider nicht viel weiterhelfen, Anyone, im Bereich Design Patterns bin ich leider nicht so arg bewandert!

Aber hier gibt es einige, die mehr drauf haben (mepeisen z.B. wenn er will)
Asipak ist offline   Mit Zitat antworten
Alt 11.08.2009, 16: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:
Ich habe mich an dieser Stelle vorerst für das Observer-Entwurfsmuster entschieden, bin mir aber unschlüssig darüber, ob dieser Weg der richtige ist und ob das überhaupt auf diese Art funktionieren würde.
Ich denke nicht, denn beim Thema Template geht es nicht um die Überwachung von Ereignissen, sondern um die Komposition von Elementen. Das composite pattern ist also die richtige Wahl. Kombiniert mit dem MVC-Pattern ergibt sich HMVC, was für meine Begriffe eine ideale Plattform für generische GUI-Strukturen ist. Sofern du noch den Page-Controller integrierst, kannst du sogar eine allgemeingültige Schnittstelle für PlugIns schaffen. Wichtig dabei ist noch, dass jedes PlugIn mit den selben Informationen seiner Umgebung versorgt wird, sonst lassen sich z.B. Sprachabhängigkeit nicht sauber umsetzen. Was die Wahl der Template-Sprache angeht, so würde ich auf XML setzen, das kann jeder HTMLer. So erleichterst du dir die Arbeit im Team.
__________________
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 11.08.2009, 16:44  
Benutzer
 
Registriert seit: 07.08.2009
Beiträge: 94
PHP-Kenntnisse:
Anfänger
Anyone befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das also richtig verstanden habe, dann existieren lauter kleine MVC-Modelle, die allesamt durch einen Pagecontroller verwaltet werden? Hui, dass hört sich nach viel Gehirnzellverbrennung an.

Wüsstest du eventuell ein gutes, kompaktes, Tutorial in Bezug auf HMVC? Dieses muss sich auch nicht unbedingt auf PHP beziehen, Java und C++/C# würen zur Not auch gehen.

Vielen Dank schonmal für deinen qualitativ hochwertigen Beitrag.
Anyone 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
Strukturierung größerrer Projekte #Avedo Software-Design 19 24.10.2008 11:10
Strukturierung einer kleinen DB c-f-g Datenbanken 6 24.03.2006 09:54
Strukturierung modularer Website mit CleanUrls ssm PHP Tipps 2006 20 22.03.2006 16:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php hmvc tutorial, formuliere loop in php, template loop schleife entwickeln, php plugin schnittstelle, smarty strukturierung, google erfasst smarty falsch, php plugin parser

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