Maison développement back-end tutoriel php 基于Zend的Config机制的应用分析_php实例

基于Zend的Config机制的应用分析_php实例

May 17, 2016 am 09:05 AM
config zend

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机制分析结束。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment corriger l'erreur 0xC00CE556 renvoyée par l'analyseur .NET Comment corriger l'erreur 0xC00CE556 renvoyée par l'analyseur .NET Apr 25, 2023 am 08:34 AM

Lors de l'installation d'une nouvelle version d'une application, Windows peut afficher ce message d'erreur « Une erreur s'est produite lors de l'analyse de C:\\Windows\Microsoft.Net\Framework\v2.0.50727\Config\machine.configParser a renvoyé l'erreur 0xC00CE556 ». Ce problème se produit également au démarrage de votre système. Quelle que soit la situation dans laquelle vous rencontrez ce problème, .NETFramework est le véritable coupable en coulisses. Il existe des correctifs très simples que vous pouvez utiliser pour empêcher ce code d'erreur de réapparaître. Correctif 1 – Remplacer les fichiers corrompus Vous pouvez facilement remplacer le ma corrompu à partir du répertoire d'origine

Comment utiliser ThinkPHP\Config pour la gestion de la configuration en php ? Comment utiliser ThinkPHP\Config pour la gestion de la configuration en php ? May 31, 2023 pm 02:31 PM

Avec le développement continu du langage PHP, ThinkPHP, largement utilisé dans le framework back-end PHP, s'améliore également constamment. À mesure que les scénarios commerciaux deviennent de plus en plus complexes, la demande en matière de gestion de configuration dans ThinkPHP augmente également. Dans ce contexte, ThinkPHP fournit de riches fonctions de gestion de configuration. Aujourd'hui, nous allons présenter comment implémenter la gestion de configuration via ThinkPHPConfig. 1. Introduction à ThinkPHPConfig ThinkPHPConfig est léger

Comment utiliser l'ACL (Access Control List) pour le contrôle des autorisations dans Zend Framework Comment utiliser l'ACL (Access Control List) pour le contrôle des autorisations dans Zend Framework Jul 29, 2023 am 09:24 AM

Comment utiliser l'ACL (AccessControlList) pour le contrôle des autorisations dans Zend Framework Introduction : Dans une application Web, le contrôle des autorisations est une fonction cruciale. Il garantit que les utilisateurs ne peuvent accéder qu'aux pages et fonctionnalités auxquelles ils sont autorisés à accéder et empêche tout accès non autorisé. Le framework Zend fournit un moyen pratique d'implémenter le contrôle des autorisations, en utilisant le composant ACL (AccessControlList). Cet article explique comment utiliser l'ACL dans Zend Framework.

Framework d'implémentation PHP : Tutoriel de mise en route de Zend Framework Framework d'implémentation PHP : Tutoriel de mise en route de Zend Framework Jun 19, 2023 am 08:09 AM

Framework d'implémentation PHP : tutoriel d'introduction à ZendFramework ZendFramework est un framework de site Web open source développé par PHP et actuellement maintenu par ZendTechnologies. ZendFramework adopte le modèle de conception MVC et fournit une série de bibliothèques de code réutilisables pour servir l'implémentation d'applications Web2.0 et Web Serve. ZendFramework est très populaire et respecté par les développeurs PHP et propose une large gamme de

Comment PHP utilise-t-il CodeIgniter\Config pour la gestion de la configuration ? Comment PHP utilise-t-il CodeIgniter\Config pour la gestion de la configuration ? Jun 02, 2023 pm 06:01 PM

1. Introduction à CodeIgniter CodeIgniter est un framework de développement PHP léger et complet conçu pour fournir aux développeurs Web des outils rapides et puissants pour créer des applications Web. Il s'agit d'un framework open source qui utilise le modèle d'architecture MVC pour réaliser un développement rapide et des fonctions de base, tout en prenant en charge une variété de bases de données. 2. Introduction à la bibliothèque Config La bibliothèque Config est un composant du framework CodeIgniter et est utilisée pour configurer et gérer le code. La bibliothèque Config contient de nombreux

Comment configurer l'environnement Window2003 IIS+MySQL+PHP+Zend Comment configurer l'environnement Window2003 IIS+MySQL+PHP+Zend Jun 02, 2023 pm 09:56 PM

Le package d'installation de Windows 2003 comprend Zend, PHP5.2.17, PHPWind8.7 et PHPMyadmin3.5.2. Vous pouvez télécharger le package d'installation directement pour gagner du temps dans la recherche de ressources. Cependant, comme MySQL a dépassé la limite de téléchargement, vous devez vous rendre sur le site officiel de MySQL pour télécharger. Ensuite, décompressez et copiez sur le lecteur D, comme indiqué ci-dessous : MySQLinDdisk Installez et configurez WindowsIIS+FTP Cliquez sur Démarrer>Panneau de configuration>Ajouter ou supprimer des programmes.Ajout ou suppression d'un PG Cliquez sur Ajouter/Supprimer des composants Windows (A). Ajout d'une commande

PHP ne reconnaît pas ZendOptimizer, comment le résoudre ? PHP ne reconnaît pas ZendOptimizer, comment le résoudre ? Mar 19, 2024 pm 01:09 PM

PHP ne reconnaît pas ZendOptimizer, comment le résoudre ? Dans le développement PHP, vous pouvez parfois rencontrer une situation dans laquelle PHP ne peut pas reconnaître ZendOptimizer, ce qui entraînera un mauvais fonctionnement de certains codes PHP. Dans ce cas, nous devons prendre certaines mesures pour résoudre le problème. Certaines solutions de contournement possibles sont décrites ci-dessous, ainsi que des exemples de code spécifiques. 1. Confirmez si ZendOptimizer est installé correctement : Tout d'abord, nous devons confirmer que ZendOptimizer

Comment utiliser le framework PHP Zend pour développer une plateforme de gestion ERP efficace Comment utiliser le framework PHP Zend pour développer une plateforme de gestion ERP efficace Jun 26, 2023 pm 11:00 PM

Avec le développement rapide des technologies de l’information, de plus en plus d’entreprises commencent à prendre conscience de la nécessité de gérer l’information. La plate-forme de gestion ERP (Enterprise Resource Planning) est un outil important pour la gestion d'entreprise moderne, qui peut aider les entreprises à réaliser la planification, la collaboration, le contrôle, l'optimisation et la gestion des ressources. Parmi eux, le framework PHP Zend est un excellent outil de développement qui peut aider les développeurs à développer des systèmes ERP rapidement et efficacement. Cet article présentera comment utiliser Zend pour développer une plateforme de gestion ERP efficace. 1. Déterminer l'analyse des besoins avant de commencer le processus de développement

See all articles