|
|
|
|
|
|
|||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
|
|
LinkBack | Themen-Optionen | Thema bewerten |
|
|
#1 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 30.07.2008
Beiträge: 570
PHP-Kenntnisse: Fortgeschritten ![]() |
Hallo,
ich bin gerade an einem Problem, zu dem ich bis jetzt keine "richtige" Lösung güt mich finden konnte. Und zwar stelle ich mir die Frage, wie man in einer Applikation auf die Applikations-Konfiguration zugreift. In meinem Fall ist das ein Objekt ähnlich Zend_Config. Bisher ist mein Ansatz folgender, mit dem ich aber sehr unzufrieden bin. Das Konzept ist ähnlich wie hmvc: Ich habe, wie gesagt, ein Konfigurationsobjekt. Dieses enthält sämtliche Konfigurationen zu der Applikation. Das führt natürlich dazu, dass es an den verschiedensten Stellen benötigt wird. Daher war mein Ansatz bisher der, dass ich den Applikationsknoten (Entspricht etwa einer Action im mvc-Prinzip) und den jeweiligen Views dieses Objekt im Konstruktor übergeben habe, so dass gesichert ist, dass es auch vorhanden ist. Das Problem dabei ist, dass viele andere Objekte - z. B. irgendwelche Plugins, aber eben nicht alle, ebenfalls Zugriff auf die Konfiguration benötigen. Das habe ich bisher so gelöst, dass ich hier den Plugins, die die Konfiguration benötigen, diese mit übergebe. Allerdings ist das sehr frickelig und unflexibel. Jetzt habe ich folgende Ansätze, die in meinen Augen aber alle nicht ganz gar sind: 1. Singleton (Evtl. mit Parameter, um mehrere verwalten zu können, also etwa so: PHP-Code:
3. Per DI in JEDES Objekt 4. Ein Applikationsobjekt, etwa wie bei dem Kohana-Framework, also etwa so: PHP-Code:
PHP-Code:
Was ist eure Meinung dazu?
__________________
|
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#2 (permalink) |
|
Neuer Benutzer
Registriert seit: 23.07.2010
Beiträge: 4
PHP-Kenntnisse: Fortgeschritten ![]() |
Ich habe das bis jetzt immer mit DI gelöst. Das hat den Vorteil, das man für Tests auch einfach nur die Globle config anpassen muss und so z.B. gegen eine Test DB testen kann.
Allgemein kann man sich das Prinzip auch sehr gut bei Spring (Java-Welt) ansehen. Da Arbeitet man dann viel mit configurations XMLs oder Mockups um teile der Application getrennt entwickeln und testen kann. Was auch den großen Vorteil von loser Kopplung hat, wo man jeden teil der Application austauschen und einzelnt wiederverwenden kann. Gruß René |
|
|
|
|
|
#4 (permalink) | ||
|
Erfahrener Benutzer
Registriert seit: 28.09.2008
Beiträge: 812
PHP-Kenntnisse: Fortgeschritten ![]() |
Zitat:
Zitat:
|
||
|
|
|
|
|
#5 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 30.07.2008
Beiträge: 570
PHP-Kenntnisse: Fortgeschritten ![]() |
Eben doch, da ja der Ansatz generisch sein soll. Vielleicht habe ich mich oben falsch ausgedrückt. Im Moment haben nur die Plugins Zugriff auf die Config, die sie auch benötigen. Aber eben das ist unflexibel. Daher will ich es so machen, dass der Zugriff von überall möglich sein soll.
__________________
|
|
|
|
|
|
#6 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 28.09.2008
Beiträge: 812
PHP-Kenntnisse: Fortgeschritten ![]() |
das ist doch die gleiche Diskussion wie bei dem DB-Objekt das überall verfügbar sein soll
(egal, ob eine andere Klasse es benötigt oder nicht). Quasi "globale Objekte". Ich dachte immer ein wesentliches Merkmal der OOP sei Kapselung und daß eben gerade NICHT alles überall verfügbar sein soll. Oder noch "ketzerischer" ausgedrückt: verzichte auf OOP, dann ist Deine Konfiguration überall verfügbar. Zitat:
Geändert von Koala (25.07.2010 um 16:16 Uhr). |
|
|
|
|
|
|
#7 (permalink) |
|
Neuer Benutzer
Registriert seit: 23.07.2010
Beiträge: 4
PHP-Kenntnisse: Fortgeschritten ![]() |
Du könntest die Plugins natürlich auch über ein Observer Pattern implementieren, so dass du an gewissen Stellen in dennen du Plugins anbieten willst einfach das Observable Interface Implementierst, dass seinen ganzen Context ($this) an die Listener bzw. deine Plugins übergibt. Dann kannst du ganz normal deine DI konfigurieren und dann trozdem dynamisch Plugins registrieren, die dann über den Context auf verschiedene Konfigutationen zugreifen (wie z.B.: ein DB-Objekt oder Registry-Objekt)
gruß René |
|
|
|
|
|
#8 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 30.07.2008
Beiträge: 570
PHP-Kenntnisse: Fortgeschritten ![]() |
Mmh... Wäre auch eine Idee, allerdings wäre dieser Ansatz dann wieder beschränkt auf die Plugins und für alles andere müsste ich mir wieder etwas anderes überlegen.
__________________
|
|
|
|
|
|
#9 (permalink) |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 26.259
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Warum injectest Du die jeweils benötigten Einstellungen (nicht das ganze Conf-Objekt) nicht von außen in die Methode?
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
|
#10 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 30.07.2008
Beiträge: 570
PHP-Kenntnisse: Fortgeschritten ![]() |
Das Problem, dass ich bei DI sehe, ist, dass ich dann _jedes_ Objekt bei DI-Container o. ä. aufrufen müsste. Ich habe mich mal bei asp.net umgesehen und da ist es so, dass die App-Config oder wie das bei denen heißt, per statischer Methoden bzw. einer Art Singleton gehandhabt wird. Bei jsf/jsp ist es ebenso. Daher tendiere ich jetzt mittlerweile auch wieder mehr zu diesem Ansatz.
Das ist aber auch schwer zu entscheiden...
__________________
|
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| request GET value max length config? | Desian | PHP-Fortgeschrittene | 3 | 30.06.2010 13:51 |
| MySQL Config Performance bei schlechten Abfragen | cycap | Datenbanken | 13 | 15.06.2010 09:21 |
| [Erledigt] CakePHP .hataccess oder Config? | BlackScorp | PHP Einsteiger | 2 | 26.03.2010 11:12 |
| Vergleichbare Funktionen ISTNV aus Excel?????? | axeos | PHP Einsteiger | 2 | 26.04.2009 20:52 |
| Welche Methode um Config Files editierbar zu machen? | GSJLink | PHP-Fortgeschrittene | 5 | 25.07.2008 01:01 |
| SQL Daten in config eintragen | rate | PHP Tipps 2008 | 9 | 09.06.2008 10:27 |
| Config Datei oder Datenbank | snatch-ic | PHP Tipps 2008 | 11 | 17.03.2008 06:13 |
| Wo is die Config? | cycap | Datenbanken | 0 | 31.05.2006 08:59 |
| Kismet install und config?? | c01001 | Server, Hosting und Workstations | 10 | 22.11.2005 21:53 |
| Apache2 config oder wie??? | c01001 | Server, Hosting und Workstations | 8 | 19.11.2005 18:56 |
| config an php anpassen | PHP Tipps 2005 | 8 | 28.05.2005 13:32 | |
| Vergleichbare Fktn. wie in_array für MySQL | Igäl | Datenbanken | 7 | 28.02.2005 10:07 |
| MYSQL Config Table auslesen? Klappt nicht.. | Datenbanken | 4 | 06.01.2005 16:24 | |
| 1 config | Creativ | PHP Tipps 2004 | 5 | 28.07.2004 16:08 |
| Fatal error: main(): Failed opening required 'config.' ... | PHP Tipps 2004 | 4 | 11.06.2004 18:46 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| http://www.php.de/software-design/70028-mvc-und-vergleichbare-und-applikations-config.html, mvc php wo datenbank abfragen, mvc prinzip mit php, mvc konfigurationsdaten |