php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.07.2008, 14:37  
Benutzer
 
Registriert seit: 01.07.2007
Beiträge: 47
PHP-Kenntnisse:
Fortgeschritten
ecomeback
Standard Klasse statt globaler Variablen

Hallo zusammen,

macht es Sinn in einem Framework eine Klasse zu implementieren, die die Aufgabe globaler Variablen übernimmt und als Zwischenspeicher mit entsprechenden Methoden genutzt werden kann? Im Prinzip möchte ich vermeiden, dass in den Methoden und Funktionen global $var; genutzt wird. Das FW arbeitet mit einer statischen Factory und verwendet selbst keine globalen Variablen in dieser Form.

Sprich, ich möchte dem User die Möglichkeit geben eigene Variablen (vielleicht auch außerhalb der Session) in einem Namensraum zu registrieren und an einer beliebigen Stelle wieder aufzurufen.

Kann das auch ohne $GLOBAL, also nur mithilfe eines Singleton instanzierten Objekts passieren "oder" sollte man diese Klasse selbst mit globalen Variablen arbeiten lassen? Von der Handhabung macht es im Prinzip keinen Unterschied, nur was sagen "PHP Etikette" und Ressourcen dazu.

Gab es nicht mal eine ziemlich lange Diskussion, was den Ersatz globaler Variablen durch eine Faktory Pattern angeht?

Beste Grüße
ec
ecomeback ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.07.2008, 14:55  
¯\_(ツ)_/¯
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.814
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich denke eine Singleton Variante wäre hier von Vorteil. Schau dir doch mal das Zend Framework an da wurde das so gehandhabt dass es eine zentrale Klasse (Registry) gibt die als Singleton arbeitet und so verschiedene Variablen, Objekte etc. speichert. Klick

Auch das Adventure-PHP-Framework hat so eine "Registry" siehe Klick
__________________
▇█▓▒░◕‿‿◕░▒▓█▇
Flor1an ist offline   Mit Zitat antworten
Alt 13.07.2008, 17:20  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wobei die APF-Registry mit guter Vorsicht statt Nachsicht auch einen Schreibschutz und Namensräume implementiert
phpdummi ist offline   Mit Zitat antworten
Alt 14.07.2008, 00:01  
Benutzer
 
Registriert seit: 01.07.2007
Beiträge: 47
PHP-Kenntnisse:
Fortgeschritten
ecomeback
Standard

Wieder mal einiges gesehen und gefunden. Danke dafür. Scheint ja durchaus "normal" zu sein, das zu tun und diesen Gedanken zu verfolgen. Was Schreibschutz und NameSpace angeht, so ist das ja auch eine Frage der Umsetzung. Wenn es sich im eine zentrale Klasse handelt, die auch Corevariablen etc. beinhalte, dann ist das natürlich sehr anzuraten. Gleichzeitig spicht natürlich viel dafür das zu zentralisieren.

Beste Grüße
ec
ecomeback ist offline   Mit Zitat antworten
Alt 14.07.2008, 15:53  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.247
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Der wichtige Hinweis ist hier das Stichwort Registry Pattern. Du solltest allerding nur mäßig davon Gebrauch machen. Genau wie globals ist das eigentlich auch eine unsaubere Methode. Wo möglich, solltest Du Deinen Klassen über die Methodenparameter die nötigen Informationen zukommen lassen.
nikosch ist gerade online   Mit Zitat antworten
Alt 15.07.2008, 13:42  
Benutzer
 
Registriert seit: 01.07.2007
Beiträge: 47
PHP-Kenntnisse:
Fortgeschritten
ecomeback
Standard

Im Prinzip hast du schon recht, aber die Umsetzung des Registry-Patterns ist so intuitiv, dass man dazu nicht unbedingt ein Buch über Design-Pattern gelesen haben muss.

Für die eigenen Klassen versuche ich das ja auch weitgehend so zu händeln, mir geht es unter anderem darum, eine Schnittstelle zu schaffen ohne globals auszukommen. Klar, es geht da um hypothetische Konstrukte, da das FW nicht zur Veröffentlichung gedacht ist (davon gibt es schon jede Menge - deshalb muss man das Rad nicht neu erfinden) - mich interessiert halt der Aufbau eines Frameworks, so dass ich mir dazu Gedanken mache und mögliche Szenarien andenke. Also nicht abschreiben, sondern denken und selbst machen, um andere Strukturen besser einschätzen zu können. Im Prinzip ein Selbstlernprojekt.

Gerade, die Idee der unsauberen Sache hat mich ja zu dieser Frage getrieben. Umgekehrt wäre nun meine Frage: Wie geht es sauber oder geht es im Moment nur darum: Theoretisch alles doof, praktische Lösungen gibt es nur die, nehmen wir das kleinere Übel?
ecomeback ist offline   Mit Zitat antworten
Alt 15.07.2008, 16:30  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
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:
Theoretisch alles doof, praktische Lösungen gibt es nur die, nehmen wir das kleinere Übel?
Die sauberste, aber nicht intuitive Lösung ist es, den ganzen Mist zu konfigurieren. Da es aber n Abstraktionsstufen in der Konfiguration gibt, bist du gezwungen, bestimmte Parameter einmal festzulegen. Das kann in einer Konfigurationsdatei erfolgen, die man an Hand eines Namespaces und/oder eines Umgebungskenners adressiert, oder man hält die Information in einer zentralen Komponente wie einer Registry. Beide Methoden habe ich schon umgesetzt und intuitiver ist sicher die Registry-Geschichte.

Der Witz dabei ist immer - und da wiederhole ich mich zum x-ten Mal -, dass das Softwaredesign im Vordergrund steht. Ist das Mist, wird auch die Implementierung Mist sein. Will heißen: deine Applikation sollte immer ein eigentständiges Applikationsdesign haben und lediglich die Umsetzung wird von einem Framework unterstützt. Ein sauberes Applikationsdesign beinhaltet auch per se wenig globale Inhalte, da auf globale Inhalte einfach kein Verlass ist, sprich diese "unpassend" manipuliert sein müssen.
__________________
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
Variable aus Klasse herausbekommen GSJLink PHP Tipps 2008 7 16.02.2008 22:25
Variablen in der Klasse überschreiben phpbeginner PHP Tipps 2007 7 12.04.2007 20:03
String-Parser Klasse - was muss rein? Matze PHP Tipps 2007 2 08.04.2007 22:14
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
mehr als eine Klasse einbinden Alpha Centauri PHP-Fortgeschrittene 4 13.04.2006 20:56
Klasenname einer nicht instanziierten Klasse DerDesian PHP Tipps 2007 9 30.11.2005 13:13
Instanz einer Klasse in einer anderen Klasse verwenden Buhmann PHP-Fortgeschrittene 7 28.10.2005 23:12
[Erledigt] Alle Variablen in Klasse gleich? PHP-Fortgeschrittene 12 18.07.2005 10:12
Rückgabewert auf einer Klasse anders als in der Klasse micbur PHP Tipps 2005-2 6 10.06.2005 15:06
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Klasse holt sich die Klasse PHP-Fortgeschrittene 9 07.10.2004 11:53
Klassenobjet in anderer Klasse benutzen inu PHP Tipps 2004 6 19.09.2004 10:58
Klasse ändern UniQ PHP Tipps 2004 5 24.08.2004 14:46
Variablen in eine Klasse "importieren"??? zwelch PHP Tipps 2004 4 02.08.2004 14:23

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zend globale variable, zend framework globale variablen, php globale variablen, php globale klasse, zend globale variablen, php globale klassen, php globale variablen in klassen, php globale variable in klasse, php klasse globale variable, globale variable in klasse, globale variablen zend, php global in klasse, zend framework globale variable, globale variablen php, zend global variablen, php class globale variablen, php global klasse, php class global variable, globale variable php, php globale variable

Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.