基于Zend的Config机制的应用分析_php实例
Zend的Config类在Zend_Config_Ini
代码
$config = new Zend_Config_Ini("/var/www/html/usvn/config/config.ini", "general");
date_default_timezone_set($config->timezone);
USVN_ConsoleUtils::setLocale($config->system->locale);
===
Config.ini文件内容
[general]
url.base = "/usvn"
translation.locale = "zh_CN"
timezone = "Asia/Shanghai"
具体分析
这里只使用了Zend_Config_Ini的构造函数,我们看到它的__construct中。
首先是判断是否有配置文件。其次是对option进行管理,这里的option可以设置的有allowModifications属性(配置文件中的属性是否可以修改),nestSeparator属性(配置文件中的key分隔符,默认为点)。
下面是调用了$iniArray = $this->_loadIniFile($filename);这个函数非常重要,就是解析了配置文件。跟进去,先是调用了_parseIniFile,为了不让大家凌乱,我们看下_parseIniFile返回出来的数据是什么样子的:
Array
(
[general] => Array
(
[url.base] => /usvn
[translation.locale] => zh_CN
[timezone] => Asia/Shanghai
[system.locale] => aa_DJ.utf8
)
)
最后解析出来的东西是一个二维数组。
parseIniFile实际上是调用了系统函数parse_ini_file来进行处理的。这里特别注意一下,在调用parse_ini_file前后它其实使用了set_error_handler和restore_error_handler,将异常处理的函数暴露出来。因为在解析配置文件的时候其实非常容易出现错误,而且这个错误的用户提示应该要非常友好,最好能提示用户在那里进行修改,所以Zend特意将错误处理函数暴露出来。如果你想设计一款很友好的系统的话,请在继承类中重写方法_loadFileErrorHandler。
继续从_loadIniFile看下去
由于我们的ini配置文件中使用[]表示了一个setion,因此_loadIniFile返回的二维数组返回的key就是general。但是其实如果我们在配置文件中使用[general:123]作为section,那么这个函数就会将123作为[;extends]的val返回。实际是这样的
Array
(
[general] => Array
(
[;extends] => 123
[url.base] => /usvn
[translation.locale] => zh_CN
)
)
现在又回到了__construct,这时候iniArray已经获取到了,是个二维数组,下面如果你设置了获取section的话,就会将iniArray进行处理_arrayMergeRecursive,主要就是将key中的system.locale => aa_DJ.utf8变为array(system=> array( locale=>aa_DJ.utf8))。 这里就是用到了options中的nestSeparator属性,这个属性默认是点,就是translation.locale会被分隔成数组,比如你在前面传入的nestSeparator为冒号,那么你的配置文件就应该设置为translation:location = .. 这里就不继续追下去了,里面无非就是一些字符串操作。
最后分析回来的dataArray是这个样子的
Array
(
[url] => Array
(
[base] => /usvn
)
[translation] => Array
(
[locale] => zh_CN
)
[timezone] => Asia/Shanghai
[system] => Array
(
[locale] => aa_DJ.utf8
)
)
下面调用父类的构造函数__construct, Zend_Config_Ini的父类是Zend_Config。
class Zend_Config implements Countable, Iterator
Zend_Config实现了Countable接口(包含count()方法),Iterator接口(包含current,key,next,rewind,valid等方法)
Zend_Config的构造函数将上面分析的二维数组放到_data中了。
这里注重看两个函数
__set和__get
魔术方法__get保证了可以使用config->field获取配置值
魔术方法__set保证了是否可以修改配置文件,set中就使用到了_allowModifications,如果这个属性有设置,那么__setter就可以设置,否则会抛出Zend_Config is read only的异常,allowModifications也是options中设置的属性之一。
至此,看文章最前面的demo代码
date_default_timezone_set($config->timezone);
这里之所以能使用->timezone就是使用了__get而不是config中的属性。
Zend的Config机制分析结束。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Beim Installieren einer neuen Version einer Anwendung zeigt Windows möglicherweise die Fehlermeldung „Beim Parsen von C:\\Windows\Microsoft.Net\Framework\v2.0.50727\Config\machine.configParser ist ein Fehler aufgetreten“ an. Dieses Problem tritt auch beim Booten Ihres Systems auf. Unabhängig davon, in welcher Situation Sie auf dieses Problem stoßen, ist .NETFramework der wahre Übeltäter hinter den Kulissen. Es gibt einige sehr einfache Lösungen, mit denen Sie verhindern können, dass dieser Fehlercode erneut angezeigt wird. Fix 1 – Beschädigte Dateien ersetzen Sie können beschädigte Dateien ganz einfach aus dem Originalverzeichnis ersetzen

Mit der kontinuierlichen Weiterentwicklung der PHP-Sprache wird auch ThinkPHP, das im PHP-Backend-Framework weit verbreitet ist, ständig verbessert. Da Geschäftsszenarien immer komplexer werden, steigt auch die Nachfrage nach Konfigurationsmanagement in ThinkPHP. In diesem Zusammenhang bietet ThinkPHP umfangreiche Konfigurationsverwaltungsfunktionen. Heute stellen wir vor, wie Sie das Konfigurationsmanagement über ThinkPHPConfig implementieren. 1. Einführung in ThinkPHPConfig ThinkPHPConfig ist Thin

So verwenden Sie ACL (AccessControlList) zur Berechtigungskontrolle im Zend Framework. Einführung: In einer Webanwendung ist die Berechtigungskontrolle eine entscheidende Funktion. Es stellt sicher, dass Benutzer nur auf die Seiten und Funktionen zugreifen können, für die sie eine Zugriffsberechtigung haben, und verhindert unbefugten Zugriff. Das Zend-Framework bietet eine praktische Möglichkeit, die Berechtigungskontrolle mithilfe der ACL-Komponente (AccessControlList) zu implementieren. In diesem Artikel wird die Verwendung von ACL im Zend Framework vorgestellt

PHP-Implementierungsframework: ZendFramework-Einführungs-Tutorial ZendFramework ist ein von PHP entwickeltes und derzeit von ZendTechnologies verwaltetes Open-Source-Website-Framework, das das MVC-Designmuster übernimmt und eine Reihe wiederverwendbarer Codebibliotheken zur Implementierung von Web2.0-Anwendungen und Web Serve bereitstellt. ZendFramework ist bei PHP-Entwicklern sehr beliebt und geschätzt und bietet eine große Auswahl an

1. Einführung in CodeIgniter CodeIgniter ist ein leichtes und umfassendes PHP-Entwicklungsframework, das Webentwicklern schnelle und leistungsstarke Tools zum Erstellen von Webanwendungen bietet. Es handelt sich um ein Open-Source-Framework, das das MVC-Architekturmuster nutzt, um eine schnelle Entwicklung und Grundfunktionen zu erreichen und gleichzeitig eine Vielzahl von Datenbanken zu unterstützen. 2. Einführung in die Config-Bibliothek Die Config-Bibliothek ist eine Komponente im CodeIgniter-Framework und wird zum Konfigurieren und Verwalten von Code verwendet. Die Config-Bibliothek enthält viele

Das Installationspaket für Windows 2003 umfasst Zend, PHP5.2.17, PHPWind8.7 und PHPMyadmin3.5.2. Sie können das Installationspaket direkt herunterladen, um Zeit bei der Suche nach Ressourcen zu sparen. Da MySQL jedoch das Upload-Limit überschritten hat, müssen Sie zum Herunterladen auf die offizielle MySQL-Website gehen. Dann entpacken und auf das Laufwerk D kopieren, wie unten gezeigt: MySQLinDdisk Installieren und konfigurieren Sie WindowsIIS+FTP. Klicken Sie auf Start > Systemsteuerung > Programme hinzufügen oder entfernen.Hinzufügen oder Löschen eines PG Klicken Sie auf „Windows-Komponenten hinzufügen/entfernen“ (A). Addingorde

PHP erkennt ZendOptimizer nicht, wie kann man das lösen? Bei der PHP-Entwicklung kann es manchmal vorkommen, dass PHP ZendOptimizer nicht erkennt, was dazu führt, dass einige PHP-Codes nicht ordnungsgemäß ausgeführt werden. In diesem Fall müssen wir einige Maßnahmen ergreifen, um das Problem zu lösen. Im Folgenden werden einige mögliche Problemumgehungen zusammen mit spezifischen Codebeispielen beschrieben. 1. Bestätigen Sie, ob ZendOptimizer korrekt installiert ist: Zuerst müssen wir bestätigen, dass ZendOptimizer

Mit der rasanten Entwicklung der Informationstechnologie erkennen immer mehr Unternehmen die Notwendigkeit des Informationsmanagements. Die ERP-Managementplattform (Enterprise Resource Planning) ist ein wichtiges Werkzeug für die moderne Unternehmensführung, das Unternehmen dabei helfen kann, Ressourcenplanung, Zusammenarbeit, Kontrolle, Optimierung und Verwaltung zu realisieren. Unter ihnen ist das PHP-Framework Zend ein hervorragendes Entwicklungstool, das Entwicklern helfen kann, ERP-Systeme schnell und effizient zu entwickeln. In diesem Artikel wird erläutert, wie Sie mit Zend eine effiziente ERP-Verwaltungsplattform entwickeln. 1. Bestimmen Sie die Anforderungsanalyse, bevor Sie mit dem Entwicklungsprozess beginnen
