Einstellungen mit eZINI lesen
Diese Seite richtet sich an PHP-Entwickler, die in ihrem Code Konfiguration lesen. Jede Einstellung in Exponential ist
ein INI-Wert, gelesen über eZINI (lib/ezutils/classes/ezini.php), das die Standardwerte des Kernels, die
Erweiterungen, den Siteaccess und die Überschreibungen der Installation zu einer Sicht zusammenführt. Die auf
Erweiterungen ausgerichtete Referenz ist eZINI; diese Seite
konzentriert sich auf die korrekte Verwendung in PHP-Code.
Inhalt
- Die Aufrufe
- Die Schichten
- Umgebungsvarianten
- Arrays
- Standardwerte für fehlende Schlüssel
- Ihre eigene Einstellungsdatei
- Einstellungen schreiben
- Caches und persistente Worker
Die Aufrufe
$ini = eZINI::instance(); // site.ini
$ini = eZINI::instance( 'content.ini' ); // another file
$value = $ini->variable( 'DebugSettings', 'DebugOutput' ); // a string
$has = $ini->hasVariable( 'DebugSettings', 'DebugOutput' ); // bool
$list = $ini->variable( 'ExtensionSettings', 'ActiveExtensions' ); // an array for Key[] settings
$parts = $ini->variableArray( 'SomeBlock', 'SemicolonList' ); // a value split on ';'
$block = $ini->group( 'DatabaseSettings' ); // the whole block as an array
$exists = $ini->hasGroup( 'AcmeReportSettings' );eZINI::instance() gibt ein gemeinsam genutztes Objekt je Datei und Verzeichnis zurück, sodass ein erneuter Aufruf
günstig ist.
Die Schichten
Ein Wert wird in dieser Reihenfolge gelesen; die letzte Schicht, die ihn setzt, gewinnt:
settings/<file>.ini, die Standardwerte des Kernels (oder die eigenesettings/<file>.iniIhrer Erweiterung für eine Datei von Ihnen)settings/<file>.ini.append.phpder aktiven Erweiterungen, in der Reihenfolge der Erweiterungensettings/siteaccess/<siteaccess>/undsettings/siteaccess/<siteaccess>/der Erweiterungensettings/override/der Erweiterungensettings/override/<file>.ini.append.phpder Installation
Die Reihenfolge der Erweiterungen spielt eine Rolle, wenn zwei Erweiterungen denselben Schlüssel setzen (Ladereihenfolge der Erweiterungen, Geltungsbereiche von Einstellungen und ihre Reihenfolge).
Umgebungsvarianten
Wenn config.env.php EXP_ENV definiert (zum Beispiel dev, test, prod), liest eZINI zusätzlich eine Variante
jeder Datei mit dem Umgebungsnamen nach .ini, nach der Standarddatei derselben Schicht:
settings/override/site.ini.append.php
settings/override/site.ini.test.append.php read after it when EXP_ENV is 'test'Die Variante überschreibt nur ihre eigene Schicht, und jede Umgebung hat ihren eigenen INI-Cache.
eZINI::environment() gibt den Namen zurück; Templates lesen ihn mit {exp_environment()}
(Umgebungseinstellungen).
Arrays
[AcmeReportSettings]
ClassList[]
ClassList[]=article
ClassList[]=event- Zeilen
Key[]=valueaddieren sich über die Schichten hinweg. - Eine leere Zeile
Key[]löscht alles, was davor gesetzt wurde, auch in früheren Schichten. Liefern Sie sie als erste Zeile einer Liste in Ihren Standardwerten aus, damit eine Überschreibung die Liste sauber ersetzen kann. Key[name]=valueergibt ein assoziatives Array.
Standardwerte für fehlende Schlüssel
variable() auf einen fehlenden Schlüssel schreibt einen Fehler („Undefined variable“ oder „Undefined group“) in die
Debug-Ausgabe und das Fehler-Log und gibt false zurück. Code, der optionale oder neue Schlüssel liest, muss prüfen:
$ini = eZINI::instance( 'acmereport.ini' );
$limit = $ini->hasVariable( 'ListSettings', 'DefaultLimit' )
? max( 1, min( 100, (int)$ini->variable( 'ListSettings', 'DefaultLimit' ) ) )
: 10;Casten und begrenzen Sie Werte aus Einstellungen immer, wie jede Eingabe: Einstellungen werden von Menschen geschrieben.
Ihre eigene Einstellungsdatei
Liefern Sie extension/acmereport/settings/acmereport.ini mit jedem Schlüssel und einem Kommentar zu jedem aus.
Änderungen an den Dateien des Kernels gehören in *.ini.append.php, eingeschlossen in einen PHP-Kommentar, damit der
Webserver sie niemals anzeigt:
[ModuleSettings]
ExtensionRepositories[]=acmereport
*/ ?>Einstellungen schreiben
$ini->setVariable( $block, $name, $value ) ändert den Wert im Speicher für diese Anfrage; save() schreibt eine Datei.
Um Einstellungen in einer Datei zu ändern, verwenden Sie die Engine exp:ini, die Zeile für Zeile bearbeitet und
Kommentare erhält (Einstellungen auf der Kommandozeile ändern, exp:ini):
php bin/php/console exp:ini get acmereport.ini/ListSettings/DefaultLimit
php bin/php/console exp:ini set acmereport.ini/ListSettings/DefaultLimit 20 globalSchreiben Sie niemals Geheimnisse in eine Datei, die Ihre Erweiterung ausliefert; lesen Sie sie aus settings/override/
der Installation.
Caches und persistente Worker
- Einstellungen werden in den INI-Cache kompiliert. Nach einer Änderung:
php bin/php/ezcache.php --clear-tag=ini.--clear-id=inierfasst den globalen INI-Cache nicht. - Unter Velocity liest ein Worker die Einstellungen einmal und behält sie;
exp:velocity deployleert den INI-Cache und startet die Worker in der richtigen Reihenfolge neu (Persistente Velocity-Worker für PHP-Entwickler). - Halten Sie einen
eZINI-Wert nicht anfrageübergreifend in einer eigenen statischen Eigenschaft; lesen Sie ihn dort auseZINI::instance(), wo Sie ihn brauchen (Fallen durch statischen Zustand).
Verwandte Seiten
- Einstellungen und INI-Dateien in Ihrer Anwendung
- INI-Dateien für Erweiterungsautoren
- eZINI erhält Kommentare
- Freie Dokumentation: diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.