Frage

Bei der Arbeit wir eine INI-Datei verwenden, um Variablen zu setzen, bevor der Rest des Rahmens Aufruf (Ich denke, es geht

function getConfigVars(){
    //read my_config.ini file
    ....
    //call framework
}

, und ich habe immer gefragt, ob es ein Vorteil zu tun, dass es so war.

Es scheint mir, dass Sie dann Zugriffsregeln zu schreiben haben die Menschen aus dem Web und PHP es von der Suche zu stoppen hat sie zu analysieren und zu verstehen.

Also, warum my_config.ini verwenden, anstatt my_config.php? Es ist nicht wie jemand es berühren sollte, nachdem es eingerichtet ist und es scheint bequemer, nur die Variablen aufrufen und in der Lage sein, Ihre IDE Auto haben, den Text abzuschließen, wo Sie die INI-Variablen verwenden / parsen es auf Fehler.

War es hilfreich?

Lösung

Die Zend Framework ein Config-Parsen enthält, die Dateien analysiert, die in dem ini-Format geschrieben werden ( Zend_Config_Ini ), es so klingt, ist das, was Sie verwenden.

Die Konfigurationsdatei nicht in Ihrem Dokument root befinden sollte, und wenn es nicht in Ihrem Dokument Wurzel ist dann keine Rückschreibregeln erforderlich sind, da niemand es trotzdem zugreifen kann.

  

Das INI-Format ist darauf spezialisiert, sowohl die Möglichkeit zu bieten, eine Hierarchie von Konfigurationsdaten Schlüsseln und Vererbung zwischen Konfigurationsdatenabschnitten zu haben. Konfigurationsdaten Hierarchien werden unterstützt, indem die Tasten mit dem Punkt oder Punktzeichen Trenn (.). Ein Abschnitt kann aus einem anderen Abschnitt erweitern oder erben, indem Sie die Abschnittsnamen mit einem Doppelpunkt (:) und der Namen des Abschnitts, von dem Datum übernommen werden soll.

Zend_Config_Ini Seite.

Das Zend Framework verwendet es, damit Sie mehrere Konfigurationsparameter, eine für Inszenierung, eine für die Entwicklung und eine für die Produktion haben. Dies ermöglicht auch eine einfache Einstellung der Datenbankeinstellungen für die Produktion und für die Entwicklung und mit zwei sehr unterschiedlichen Einstellungen. Verschiedene Wege festgelegt in der ini-Datei bis zu dem umfasst befinden. Dies macht es viel einfacher, Code von der Entwicklung bis zur Produktion zu bewegen, dass sofort alles zu wissen, die Entwicklung ausgeschaltet werden soll.

Klar, das wäre möglich, mit einem PHP-Skript, aber es wäre mehr Parsing der verschiedenen Konfigurationsvariablen sowie zu tun, wenn / dann Kontrollen erfordern, während der parse_ini_file mit () tut dies alles automatisch für Sie.

Die anderen Antworten auch schon darauf hingewiesen, dass nicht-Programmierer müssen Variablen ändern und oder etwas auf der Website, die als Konfigurationsvariable gesetzt ist (zum Beispiel Site-Titel, die in dem Webseiten-Layout verwendet wird). INI-Dateien sind einfach zu verstehen und selbst für jemanden zu lesen, die noch nie zuvor programmiert hat.

Beispiel von einer Website Zur Zeit arbeite ich an:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.db.adapter       = "PDO_SQLITE"
resources.db.params.dbname = APPLICATION_PATH "/../data/db/users.db"

resources.view[] =

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.db.params.dbname = APPLICATION_PATH "/../data/db/users-testing.db"

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.db.params.dbname = APPLICATION_PATH "/../data/db/users-dev.db

Es macht es extrem einfach, mehrere Datensätze für die verschiedenen Umgebungen zu haben, in dem der Code ausgeführt werden.

Andere Tipps

Für diejenigen, die auf diese Frage kommen, weil sie wissen wollen, ob es irgendwelche Performance-Unterschiede sind eine INI-Datei zwischen der Verwendung, die analysiert werden müssen und eine PHP-Datei, die einfach enthalten ist (und kann durch PHP Cache gespeichert werden): Ja, es Unterschiede sind, aber sie sind so klein, dass es nicht wirklich wichtig.

Meine Benchmark-Szenario ist eine config.ini Datei mit 20 Schlüssel / Wert-Paare und eine config.php Datei mit den gleichen 20 Schlüssel / Wert-Paare wie definiert geschrieben. PHP-Version ist 5.4.9 auf Ubuntu Linux 13.04.

key1 = value1
...
key20 = value20

vs.

<?php
define("key1", "value1");
...
define("key2", "value20");

Zwei Testskripte einschließlich der configs:

<?php
$CONF = parse_ini_file("config.ini");

vs.

<?php
require_once "config.php";

I getestet, um die Leistung mit ab -c 25 -n 10000.

Ergebnis ohne PHP Cache:

ini: Requests per second:    2660.89 [#/sec] (mean)
php: Requests per second:    2642.28 [#/sec] (mean)

Ergebnis mit APC PHP Cache:

ini: Requests per second:    3294.47 [#/sec] (mean)
php: Requests per second:    3307.89 [#/sec] (mean)

lief ich die Tests mehrfach, natürlich die Zahlen jedes Mal variieren, aber der Konsens ist: config.ini ist ein wenig schneller, wenn kein PHP Cache verwendet wird, config.php ist ein wenig schneller, wenn ein PHP-Cache verwendet wird. Aber der Unterschied ist so klein, dass die Entscheidung nicht auf Leistung basieren.

Ihre Frage wirft einen fairen Punkt, um sicher zu sein.

Ein paar Punkte für .ini Dateien:

  • Verwenden Sie die Datei mit einer anderen Sprache: . Wenn Sie jemals ein Perl, Python, Ruby usw. Skript tun etwas, das besonders einfach, mit dieser Sprache haben wollte und brauchte, um die Projekteinstellungen zugreifen Sie kein Glück wäre, wenn Sie Ihre Einstellungen in einer PHP-Datei gespeichert.

  • Human Bearbeitung von Daten . Auch wenn Sie es in Ihrer Frage, Absichten entlassen oder nicht, ist es sehr wahrscheinlich, jemand könnte dort am Ende Stossen und es kann keine technische Einzel sein. Das INI-Format ist viel weniger beängstigend als PHP-Code, auch wenn es nur ein Haufen von Variablendeklarationen

  • ist
  • Aktualisieren der Einstellungen . Ich denke, dass es viel einfacher ist, eine neue INI-Datei, anstatt das Schreiben eine PHP-Datei zu erstellen. Das ist ziemlich subjektiv, aber, aber es ist erwähnenswert.

  • Beziehung zwischen Einstellgrößen . Es ist ziemlich einfach / intuitive Einstellungen eine Hierarchie mit einer INI-Datei zu geben. Während dies auch mit PHP ist es nicht so sauber möglich wäre, und kann unansehnlich, wenn man tief verschachtelte assoziative Arrays versuchen, Informationen zu speichern, zu tun.

Zusätzlich zu den, die Klopfen an INI von „es gegen Web Zugriff zu schützen, die“ nicht relevant sind in den meisten Szenarien, wie die meisten PHP-Projekte (zumindest die, die ich bin Teil) halten einen fairen Betrag von Code entfernt aus dem Stammordner, und in der Regel die Einstellungen dorthin gehen.

Nun, es könnte einfacher sein, für einen nicht-Programmierer config-Variablen zu ändern ... Wenn das an Ihrem Arbeitsplatz notwendig ist.

Ich habe entdeckt, sorgfältige Platzierung der <?php und ?> kann sie davon abhalten, während die parse_ini_file angezeigt wird () noch die entsprechenden Daten aus der Datei erhalten.

Die beste Weg, es aber zu sichern, ist es über dem docroot zu platzieren, und verweigert den Zugriff auf ini in Ihrem Server-Setup.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top