ホームページ バックエンド開発 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机制分析结束。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

.NET パーサーによって返されるエラー 0xC00CE556 を修正する方法 .NET パーサーによって返されるエラー 0xC00CE556 を修正する方法 Apr 25, 2023 am 08:34 AM

新しいバージョンのアプリケーションのインストール中に、Windows で「C:\\Windows\Microsoft.Net\Framework\v2.0.50727\Config\machine.configParser の解析中にエラーが発生しました。エラー 0xC00CE556 が返されました」というエラー メッセージが表示されることがあります。この問題は、システムの起動時にも発生します。どのような状況でこの問題が発生しても、.NETFramework が舞台裏の真の原因です。このエラー コードが再び表示されないようにするために使用できる非常に簡単な修正がいくつかあります。修正 1 – 破損したファイルを置き換える 破損したファイルは元のディレクトリから簡単に置き換えることができます

Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Zend Framework でのアクセス許可制御に ACL (アクセス コントロール リスト) を使用する方法 Jul 29, 2023 am 09:24 AM

Zend Framework でのアクセス許可制御に ACL (AccessControlList) を使用する方法 はじめに: Web アプリケーションでは、アクセス許可制御は重要な機能です。これにより、ユーザーはアクセスを許可されたページと機能にのみアクセスできるようになり、不正アクセスが防止されます。 Zend フレームワークは、ACL (AccessControlList) コンポーネントを使用してアクセス許可制御を実装する便利な方法を提供します。この記事では、Zend Framework で ACL を使用する方法を紹介します。

PHP での構成管理に ThinkPHP\Config を使用するにはどうすればよいですか? PHP での構成管理に ThinkPHP\Config を使用するにはどうすればよいですか? May 31, 2023 pm 02:31 PM

PHP 言語の継続的な開発に伴い、PHP バックエンド フレームワークで広く使用されている ThinkPHP も継続的に改良されています。ビジネス シナリオがますます複雑になるにつれて、ThinkPHP での構成管理の需要も高まっています。そこで、ThinkPHP には豊富な構成管理機能が備わっていますので、今回は ThinkPHPConfig を使用して構成管理を実装する方法を紹介します。 1. ThinkPHPConfig の概要 ThinkPHPConfig は Thin

PHP 実装フレームワーク: Zend Framework 入門チュートリアル PHP 実装フレームワーク: Zend Framework 入門チュートリアル Jun 19, 2023 am 08:09 AM

PHP 実装フレームワーク: ZendFramework 入門チュートリアル ZendFramework は、PHP によって開発されたオープン ソースの Web サイト フレームワークであり、現在 ZendTechnologies によって保守されています。ZendFramework は、MVC デザイン パターンを採用し、Web2.0 アプリケーションと Web サーブの実装に役立つ一連の再利用可能なコード ライブラリを提供します。 。 ZendFramework は PHP 開発者に非常に人気があり、尊敬されており、幅広い機能を備えています。

PHP は構成管理に CodeIgniter\Config をどのように使用しますか? PHP は構成管理に CodeIgniter\Config をどのように使用しますか? Jun 02, 2023 pm 06:01 PM

1. CodeIgniter の概要 CodeIgniter は、Web 開発者に Web アプリケーションを構築するための高速かつ強力なツールを提供するように設計された軽量で包括的な PHP 開発フレームワークです。 MVC アーキテクチャ パターンを使用して迅速な開発と基本機能を実現し、さまざまなデータベースをサポートするオープンソース フレームワークです。 2. Config ライブラリの概要 Config ライブラリは CodeIgniter フレームワークのコンポーネントであり、コードの設定と管理に使用されます。 Config ライブラリには多くのものが含まれています

PHP が ZendOptimizer を認識しないのですが、どうすれば解決できますか? PHP が ZendOptimizer を認識しないのですが、どうすれば解決できますか? Mar 19, 2024 pm 01:09 PM

PHP が ZendOptimizer を認識しないのですが、どうすれば解決できますか? PHP 開発では、PHP が ZendOptimizer を認識できない状況が発生し、一部の PHP コードが正しく実行されなくなることがあります。この場合、問題を解決するために何らかの措置を講じる必要があります。考えられるいくつかの回避策を、具体的なコード例とともに以下に説明します。 1. ZendOptimizer が正しくインストールされているかどうかを確認します。まず、ZendOptimizer が正しくインストールされていることを確認する必要があります。

Window2003 IIS+MySQL+PHP+Zend 環境の設定方法 Window2003 IIS+MySQL+PHP+Zend 環境の設定方法 Jun 02, 2023 pm 09:56 PM

Windows 2003 インストール パッケージには、Zend、PHP5.2.17、PHPWind8.7、および PHPMyadmin3.5.2 が含まれています。インストール パッケージを直接ダウンロードして、リソースを検索する時間を節約できます。ただし、MySQL はアップロード制限を超えているため、MySQL 公式 Web サイトにアクセスしてダウンロードする必要があります。次に、以下に示すように、解凍して D ドライブにコピーします。 MySQLinDdisk WindowsIIS+FTP をインストールして構成します。 [スタート] > [コントロール パネル] > [プログラムの追加と削除] をクリックします。 PG の追加または削除 [Windows コンポーネントの追加と削除] (A) をクリックします。追加する

PHP フレームワーク Zend を使用して効率的な ERP 管理プラットフォームを開発する方法 PHP フレームワーク Zend を使用して効率的な ERP 管理プラットフォームを開発する方法 Jun 26, 2023 pm 11:00 PM

情報技術の急速な発展に伴い、情報管理の必要性を認識する企業が増えています。 ERP (エンタープライズ リソース プランニング) 管理プラットフォームは、現代の企業管理にとって重要なツールであり、企業がリソース プランニング、コラボレーション、制御、最適化、および管理を実現するのに役立ちます。中でも、PHP フレームワーク Zend は、開発者が ERP システムを迅速かつ効率的に開発するのに役立つ優れた開発ツールです。この記事では、Zend を使用して効率的な ERP 管理プラットフォームを開発する方法を紹介します。 1. 開発プロセスを開始する前に要件分析を決定する

See all articles