![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Benutzer Registriert seit: 31.12.2005
Beiträge: 90
|
Hey, ich habe ein recht großes Projekt (also mehrere 10 tausend Zeilen sind für mich groß!). Dabei möchte ich immer alles möglich variable gestalten und habe dafür eine cfg.php, in der ich dann viele Variablen habe, und am Ende jeder Zeile diese Variablen halt beschreibe. Die Variablen werden in Form von Variable und nicht in Form eines Cfg-Arrays festgelegt. Da ich sehr vieles auf Basis von Funktionen mache, habe ich teilweise innerhalb von Funktionen 10 globals. Ich weiß zwar in der Regel, in welcher Funktion auf welche Variablen zugegriffen wird (so grob, vor Allem bei wichtigen Funktionen), doch habe ich letztens gelesen, dass es eigentlich nicht sehr gut ist, mit global zu arbeiten. Nun, ich habe aber vielleicht 200 Config Variablen und wie oben erwähnt, ein großes Projekt. Nun habe ich mir übrelegt, ob ich mir die Mühe eventuell mache, alles zu vereinheitlichen!? Nur wie könnte ich das machen? Wäre hier eine Config Klasse sinnvoll, die einfach nur eine Reihe von Eigenschaften hat, und die ich dann als einziges innerhalb der ganzen Funktionen als global definiere, und immer per $cfg->get('varname') auf eine Variable zugreife, die ich sonst per $varname ansprechen würde? So weiß ich wenigstens immer, welche Variablen ich nicht unbedingt verändert sollte, bzw dass es sich um eine Cfg Variable handelt. Also in etwa sowas: PHP-Code: Oder sollte ich es einfach so lassen, wie es ist? Ich meine, es wäre auch sehr schwer, überall die Variablen dann durch eine neue Methode zu ersetzten... Wie würdet Ihr das machen? P.s.: PHP4 ... |
| | |
| | Nach oben #2 |
| Erfahrener Benutzer Registriert seit: 10.05.2006 Ort: Jevenstedt
Beiträge: 131
|
Ich finde die Idee mit der klasse gut. Zwar sind in PHP4 die members nicht vor zugriff von aussen geschützt aber theoretisch kann die klasse ja schreibschutz gewährleisten. Ich würde es ebenfalls so machen (nur mit PHP5). Allerdings würde ich die konfigurationsdaten in einer txt-datei oder einer datenbank lagern. Bei der txt (ini format) können spätere user einfach änderungen vornehmen. Bei einer DB müsstest du zwar eine schnittstelle zum einstellen erstellen aber das wäre für spätere anwender ja nur noch angenehmer. EDIT: Sinnvoll wäre ebenfalls die klasse als singleton anzulegen. Da du vermutlich nie mehrere konfigurationen zur selben zeit benötigst. Evt. sollte sie dann auch inis direkt einlesen können bzw. DB auslesen
__________________ Geändert von Prophet (16.06.2006 um 00:38 Uhr). |
| | |
| | Nach oben #3 |
| Benutzer Registriert seit: 31.12.2005
Beiträge: 90
|
Hi, a) was ist ein Singleton bzw wie verwende ich sie/es (?)? b) nur das Problem wäre, nun alle 200 (oder mehr) bereits verwendeten ConfigVariablen durch die neuen zu ersetzten, gibt es dafür ein TOol oder ähnliches? c) die Daten in einer DB zu sichern wäre einiseits sehr cool, da ich diese dann über das adminmenü ändern könnte aber anderseits auch ein wenig doof, da ich somit bei jedem seitenaufruf die daten neu auslesen müsste. d) wie kann ich den Schreibschutz per php4 erreichen? Garnicht, oder? Würde nur über php5 und dem schlüsselwort 'private var $varname' gehen, oder? Desweiteren hätte ich stets Probleme mit Arrays. Ich lege z.b. die DB-Config Variablen in einem Array ab und übergebe dies dann der MySQL Klasse. Keine Ahnung, wie ich das dann machen könnte. |
| | |
| | Nach oben #4 |
| Erfahrener Benutzer Registriert seit: 10.05.2006 Ort: Jevenstedt
Beiträge: 131
|
Zu a: Ein Singleton bezeichnet eine Klasse von der man nur eine Instanz erzeugen kann: Professionelle Softwareentwicklung mit PHP5 -> Singletons Zu b: Du meinst das jetzt bezogen auf die Textdatei, richtig? Nun entweder du schreibst die bei jeder aktuallisierung innerhalb/durch php komplett neu oder man kann sie nur über den space, alos direktes öffnen verändern. Ich glaube man kann mit hilfe der Datei funktionen in PHP auch zeilenweise in dateien lesen und schreiben. Das sollte also kein Problem sein. PHP.net: Filesystem Functions Zu c: Natürlich wäre das auslesen aus der Datenbank langsamer als das auslesen aus einer Datei. Aber im endeffekt wäre das glaube ich kein Problem. Musst du wissen wie du es machen willst. Zu d: Nein mit PHP4 geht das nicht, nur mit PHP5. Professionelle Softwareentwicklung mit PHP5 Das verarbeiten des Array zu einem Query ist keine Problem. Entweder du aktuallisierst immer Komplett (nicht sinnvoll weil du jeden eintrag einzeln aktuallisieren müsstest). Oder du aktuallisierst immer wenn du einen Eintrag veränderst. Dann hättest du nur vereinzelte Querys. Allerdings musst du dann die Methoden Add und Set unterscheiden. Weil beim hinzufügen und ändern andere Querys verwendet werden (ausserdem ist es sauberer).
__________________ |
| | |
| | Nach oben #6 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
In unserem aktuellen Projekt ist die Konfigurationsklasse eigentlich Dreh- und Angelpunkt, da von dort alle benötigten Informationen kommen. Fazit: Definitiv sinnvoll. In meinen Augen fast unverzichtbar. |
| | |
| | Nach oben #7 | ||||||
| Benutzer Registriert seit: 31.12.2005
Beiträge: 90
| Zitat:
Zitat:
$var1 = 'val1'; // komment1 $var2 = 'val2'; // komment2 ... $var200 = 'val200'; // komment200 angenommen ich mache nun eine configklasse, die die ganzen werte als eigenschaften besitzt, frage ich mich, wie ich das in allen meinen funktionen und php files ersetzten kann. weil statt $var1 müsste ich nun $cfg->get('var1'); machen etc ... Zitat:
Zitat:
Zitat:
PHP-Code: Aber mittels der oben vorgestellten ConfigKlasse könnte ich ja keine Arrays, sondern nur einzelne Werte festlegen, also z.b.: $cfg->set('host', 'localhost'); $cfg->set('user', 'root'); etc. Also müsste ich vor dem instanzieren meiner MySQL Klasse diese erst wieder kollektivieren: PHP-Code: Also z.b. PHP-Code: Zitat:
| ||||||
| | |
| | Nach oben #9 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Ich habe mal ein Tutorial geschrieben, was unter Anderem das behandelt hat: http://forum.developers-guide.net/showthread.php?t=231 Kannst du dir ja mal anschauen, vielleicht ist es noch eine Anregung deine Config-Klasse etwas zu erweitern.
__________________ Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
| | |
| | Nach oben #10 | |
| Benutzer Registriert seit: 31.12.2005
Beiträge: 90
| Zitat:
| |
| | |
| | Nach oben #11 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
Diskussionen und Infos zum Communityprojekt gibts hier. Ansonsten bitte die Diskussion über das Projekt bitte nicht auf mehreren Threads verteilen.
__________________ I did it my way - Senseless-Blog |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Klasse in Klasse verwenden? | goelliboy | PHP-Programmierung | 12 | 07.09.2007 11:43 |
| Wie Objekte/Vars in jeder Klasse verfügbar machen? | ex³ | PHP-Programmierung | 1 | 24.04.2006 19:54 |
| Wert Varible in Listener anderer Klasse nutzen??? | risa | Desktop-Applikationen und Grafik | 1 | 03.04.2006 07:36 |
| Design für eine Klasse | js-mueller | Allgemeine Java-Programmierung | 1 | 12.03.2006 19:23 |
| DB Klasse Problem, vererben, kombinieren | ex³ | PHP-Programmierung | 7 | 05.02.2006 17:06 |