Hinweis: Die Konfiguration wird in einer PHP-Datei gespeichert, config.php
.Was ist der beste Weg (Coding-weise), Systemkonfiguration in einer PHP-Anwendung zu speichern?
Ich habe dies anders gemacht gesehen, hier ist eine kurze Liste von Beispielen (ich Speicherung DB info in diesen Beispielen):
Konstanten: global, Nur-Lese-
define('DB_USER','user12');
define('DB_PASS','21user');
Mit GLOBALS-Array: global, veränderbar, sich wiederholend, gemischt mit anderen Globals
$GLOBALS['DB_USER']='user12';
$GLOBALS['DB_PASS']='21user';
einer nicht-globalen Array aber globaly angehoben: möglicherweise schlimmer als die zweite Option
$config=array(); ...
$config['DB_USER']='user12';
$config['DB_PASS']='21user';
... global $config;
mysql_connect('localhost',$config['DB_USER'],$config['DB_PASS']);
definieren Klasseneigenschaften: (global, zählbare)
class Config {
public $DB_USER='user12';
public $DB_PASS='21user';
}
Kriterien/Optionen/Eigenschaften:
- einfache Codierung: Sie würde nicht, wenn die überprüfen möchten Einstellung existiert, oder initialisieren
- Leichtigkeit der Änderung: ein Nicht-Programmierer/Laie könnte leicht die Einstellungen ändern
- in einem sauberen Ort gespeichert: nicht mit anderen Variablen gemischt
- Runtime-Modifikation (kann in einem Sub-Array gespeichert werden): in einigen Fällen andere Devs vorhandene Einstellungen
ändern können leicht
Die Konfiguration muss möglicherweise während der Ausführung des Systems einige Zeit geändert werden, so dass Option 1 bereits nicht realisierbar ist. Die dritte Option ist auch nicht zu sauber.
Während ich dies schreibe, bekomme ich eine große Warnung, dass die Diskussion subjektiv und geschlossen ist. So bitte halten Sie sich an das Thema und geben Sie gute Gründe für Ihre Antworten.
Dies ist eine ziemlich offensichtliche Frage, und bedenkt, dass ich mit unterschiedlichen Antworten gut vertraut bin, könnten Sie fragen, warum bin ich die ganze Aufregung zu machen? Die Sache ist, ich entwickle einen Rahmen, und im Gegensatz zu einem anderen Framework (* ahem * joomla * ahem *) möchte ich nicht ihren Fehler durchmachen, eine fehlgeleitete Lösung einzuwerfen, die am Ende geändert werden muss/in Zukunft neu gedacht.
Edit: Zunächst, die Lage der Konfigurationsdatei geht mich nichts an. Ich werde sicherstellen, dass die Leute den Standort leicht ändern können, wenn sie das möchten, aber dies ist keine Anforderung. Erstens, billige Webhosts erlaubt dies nicht zu tun, zweitens, soweit die Sicherheit geht, ist dies wirklich keine gute Option. Warum? Denn das Framework muss wissen, wo die Konfiguration ist. Wirklich, Sicherheit durch Dunkelheit funktioniert nicht.Ich würde lieber alle RFI und XSS (zum Beispiel) reparieren als paranoid beim Ausblenden der Konfigurationsdatei unter mehreren Ebenen.
mögliche Duplikate von [Was ist der beste Weg, um Konfigurationsvariablen in PHP zu speichern?] (Http: // stackoverflow .com/questions/593440/Was ist der beste Weg zur Speicherung der Konfigurationsvariablen in PHP? – alex
'Die Konfiguration muss möglicherweise während der Ausführung des Systems geändert werden, also Option 1 ist schon nicht machbar - hört sich nicht nach einem sehr guten System an! Die ganze Idee einer Konfigurationsdatei ist, dass Sie ** Konstanten ** mit allgemeinen Seiteneinstellungen wie Datenbankeinstellungen, vielleicht Seitentiteln usw. definieren. Welche Art von Dingen speichern Sie, die Sie vielleicht ändern möchten? – chigley
So funktioniert es: Eine PHP-Klasse, Datenbank, arbeitet mit den Konfigurationskonstanten DB_?, Möchte vielleicht ein Skript schreiben, um zwei DBs zu synchronisieren (als Beispiel), kann aber die Datenbank-Klasse nicht verwenden, weil er nicht kann Ändere die Konstanten .... ok das ist ein ziemlich lahmes Beispiel, ich kann mir keinen besseren vorstellen. Hoffe, du hast die Idee, tho. – Christian