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 19.05.2009, 22:33  
Erfahrener Benutzer
 
Registriert seit: 10.11.2008
Beiträge: 163
PHP-Kenntnisse:
Fortgeschritten
iXtends befindet sich auf einem aufstrebenden Ast
iXtends eine Nachricht über ICQ schicken iXtends eine Nachricht über Skype™ schicken
Standard Modulare Programmierung - Klassen nur in Klassen Gültig

Hallo,
ich sitze nun schon den ganzen Tag an diesem einen Problem. Ich weiß nicht ob es das richtige Thema ist, aber ich denke es passt hier schon ganz gut rein. Ich weiß allerdings auch nicht so genau wie ich es erklären soll, ich hoffe ihr versteht mich.

Ich wollte zu Testzwecken eine kleine Anwendung schreiben, die aus mehreren Modulen besteht. Die Module selbst sind nach dem MVC Prinzip aufgebaut und bestehen aus drei verschiedenen Klassen (Model, View, Controller).
Ich habe hierbei jetzt zwei Probleme. Bei dem einen Problem habe ich mir einen Lösungsansatz überlegt, dieser gefällt mir aber nicht so gut. Bei dem anderen Problem habe ich leider keine Ahnung wie ich das lösen kann.
Ich fang mal mit dem für mich bis jetzt unlösbaren Problem an^^

Jedes Modul besteht, wie oben beschrieben, aus drei Klassen. Den Kontroller habe ich so genannt wie das Modul selbst. Die View Klasse wollte ich View nennen. Jetzt kommt das Problem. Ich habe in jedem Modul eine View Klasse, da jedes Modul anders dargestellt werden soll. Ich habe mir also gedanken gemacht, wie ich die Klasse View nur in der Klasse des Controllers bzw. in der Model-Klasse zur verfügung stellen kann. Mit einfachen includes kommt eine "redeclare" Fehlermeldung. Ist ja eigentlich auch klar.
Aber wie kann ich das Problem lösen? Bin ich der erste der die View Klasse auch "View" nennen möchte? Die Klasse soll ja auch wirklich nur für den Controller sichtbar sein, die anderen sollen von der Klasse garnichts wissen.
Ich kann mir ja nicht für jedes Modul einen eigenen Namen für jede Klasse ausdenken, da gehen einem ja irgendwann die Namen aus.

Und jetzt zu meinem zweitem Problem. Ich möchte in der Anwendung wissen, welche Module es gibt und diese Module dann dementsprechend anzeigen. Ich habe es im moment folgendermaßen gelöst.
Ich durchlaufe mit einer Funktion den Modulordner und include mir die Datei und führe dann eine Methode aus, die den Inhalt anzeigt.
Diese Lösung finde ich persönlich aber sehr unschön. Mein Gedanke war es, in den Modulen selbst eine Methode wie z.B. "registerModule()" aufzurufen. Diese Methode registriert das Modul dann bei einer anderen Klasse. Diese Klasse besitzt dann eine Liste von Modulen, welche dann ausgeleden wird und die Module angezeigt werden können.
Aber wie kann ich das wiederum lösen? Um das Modul zu registrieren müsste das Modul ja erstmal aufgerufen werden.

Wie ihr seht habe ich da noch einige Fragen, ich hoffe ihr habt mich verstanden und könnt mir dabei helfen.

Ich bedank mich schonmal bei allen die es versuchen
iXtends ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 19.05.2009, 23:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
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

Zu 1) Zukünftig wird es dafür Namespaces geben, momentan kann dazu nur ein modulspezifisches Präfix dienen. Wo auch immer definierte Klassen werden immer Teil des gloablen Namespace sein.
Zu 2)
Zitat:
Um das Modul zu registrieren müsste das Modul ja erstmal aufgerufen werden.
Ja, da ist doch nichts verwerfliches dran. Ein Modul muss ja irgendwo bekannt (eingebunden) sein, sonst ist es ja auch nichts wert.
__________________
--
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 gerade online   Mit Zitat antworten
Alt 20.05.2009, 06:50  
Erfahrener Benutzer
 
Registriert seit: 10.11.2008
Beiträge: 163
PHP-Kenntnisse:
Fortgeschritten
iXtends befindet sich auf einem aufstrebenden Ast
iXtends eine Nachricht über ICQ schicken iXtends eine Nachricht über Skype™ schicken
Standard

Okay, die Namespaces habe ich auch schon entdeckt. Dann muss ich da wohl noch ein bisschen warten.

zu 2.) Wie macht man das denn am besten? Lässt man da wirklich zu Beginn eine Schleife durchlaufen, die einfach alle Module einbindet? Oder gibt es hier eine elegantere Lösung für?
iXtends ist offline   Mit Zitat antworten
Alt 20.05.2009, 07:42  
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 iXtends,

zum Thema MVC gabe es mal unter Privat Projekt CMS - Seite 2 - Developer's Guide eine ganz nette Diskussion. Vielleicht hilft dir das weiter. Was die Modul-Struktur einer Software angeht, habe ich unter http://www.php.de/software-design/52...erwaltung.html (Realisierung der Modulverwaltung) mal eine Diskussion dazu geführt.

In diesem Fall könntest du das ähnlich aufziehen. Es braucht dazu grundsätzlich eine Definition eines Moduls und eine Schnittstelle, die dem Modul alle relevanten Informationen der Applikation - oder des Rahmens - mitgibt, die es benötigt. Da sollte jedoch vor allem der zweite Thread für dich sehr hilfreich sein.
__________________
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 23.05.2009, 17:16  
Benutzer
 
Benutzerbild von chris14465
 
Registriert seit: 22.05.2009
Beiträge: 42
PHP-Kenntnisse:
Fortgeschritten
chris14465 befindet sich auf einem aufstrebenden Ast
Standard

Hi,

mit Namespaces musst du nicht warten. Im aktuellen RC von PHP5.3 sind die schon enthalten. PHP5.3 soll, soweit ich weiß, auch dieses Quartal noch als Stable erscheinen. Kannst dir aber jetzt schon ruhig den RC ziehen (PHP: Hypertext Preprocessor) und so deine Anwendung programmieren.

beste Grüße,
Chris

Geändert von chris14465 (23.05.2009 um 17:21 Uhr).
chris14465 ist offline   Mit Zitat antworten
Alt 24.05.2009, 02:25  
Erfahrener Benutzer
 
Registriert seit: 10.11.2008
Beiträge: 163
PHP-Kenntnisse:
Fortgeschritten
iXtends befindet sich auf einem aufstrebenden Ast
iXtends eine Nachricht über ICQ schicken iXtends eine Nachricht über Skype™ schicken
Standard

Ja, das habe ich bei meinen Recherchen auch schon gesehen. Allerdings soll die Anwendung später auch auf dem Großteil der Weserver laufen können. Und da ich mir nicht vorstellen kann, dass die ganzen Hoster gleich auf das neuste PHP updaten warte ich lieber noch^^

Zum Thema selbst, da war ich nicht untätig. Ich habe ein bisschen rumgespielt und ich denke auch weiter gekommen. Die Links vom Dr. habe ich mir alle durchgelesen und sie haben mir auch geholfen. Ich guck einfach mal wie weit ich komm und stell mein Vorgehen morgen oder übermorgen mal vor.
iXtends ist offline   Mit Zitat antworten
Alt 26.05.2009, 15:37  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
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

Zitat:
mit Namespaces musst du nicht warten
Naja, im Hinblick auf die Verbreitung auf den Servern ist das schon noch eine Überlegung wert.
__________________
--
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 gerade online   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
php & modulare programmierung flyingeagle PHP-Fortgeschrittene 1 24.09.2004 15:59

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
modulare programmierung, http://www.php.de/software-design/55270-modulare-programmierung-klassen-nur-klassen-gueltig.html, php modular programmieren, php klassen gültigkeit, php modulare programmierung, php modul klasse, php modular, php module programmieren, programmieren klassen, modulklasse php, php modul programmieren, modulare programmierung mvc, php gültigkeit von klassen, modulare software php, geltungsbereich klassen php, gültigkeitsbereiche von klassen und methoden php, modular php, php klassen programmieren, modulverwaltung script, html gültigkeit programmieren

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