ホームページ  >  記事  >  バックエンド開発  >  ZendベースのConfig機構のアプリケーション分析_PHPチュートリアル

ZendベースのConfig機構のアプリケーション分析_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:10:22709ブラウズ

Zend の Config クラスは Zend_Config_Ini にあります

コード
$config = new Zend_Config_Ini("/var/www/html/usvn/config/config.ini", "general");

date_default_timezone_set($config->タイムゾーン);

USVN_ConsoleUtils::setLocale($config->system->locale);

===

Config.ini ファイルの内容

[一般]

url.base = "/usvn"

translation.locale = "zh_CN"

タイムゾーン = "アジア/上海"


詳細な分析
ここでは Zend_Config_Ini のコンストラクターのみが使用されており、その __construct が表示されます。

最初のステップは、設定ファイルがあるかどうかを確認することです。 2 番目のステップは、オプションを管理することです。ここでのオプションは、allowModifications 属性 (構成ファイル内の属性を変更できるかどうか) と、nestSeparator 属性 (構成ファイル内のキー区切り記号、デフォルトはドット) で設定できます。

以下は $iniArray = $this->_loadIniFile($filename); と呼ばれます。この関数は構成ファイルを解析するため、非常に重要です。続いて、混乱を避けるために、_parseIniFile によって返されるデータがどのようなものかを見てみましょう:

コードをコピーします コードは次のとおりです:

Array
(
) [general] => Array
( [system.locale] => aa_DJ.utf8
)

)


最後に解析されるのは 2 次元配列です。

parseIniFile は実際にシステム関数 parse_ini_file を呼び出して処理します。ここで特に注意してください。parse_ini_file を呼び出す前後で、実際には set_error_handler とrestore_error_handler を使用して例外処理関数が公開されます。設定ファイルを解析するときにエラーが発生するのは非常に簡単で、このエラーに対するユーザー プロンプトは非常に分かりやすいものでなければならず、ユーザーにそこで変更を加えるように促すのが最善であるため、Zend は意図的にエラー処理関数を公開しています。非常に使いやすいシステムを設計したい場合は、継承されたクラスの _loadFileErrorHandler メソッドをオーバーライドしてください。

_loadIniFile から読み続ける

ini 設定ファイルではセットを表すために [] が使用されているため、_loadIniFile によって返される 2 次元配列によって返されるキーは一般的です。しかし実際には、設定ファイルのセクションとして [general:123] を使用すると、この関数は [;extends] の値として 123 を返します。これは実際には、コードのように見えるものです。コードは次のとおりです。 array(system=> array( locale=>aa_DJ.utf8)) のキーに locale => aa_DJ.utf8 を追加します。 ここではオプションのnestSeparator属性が使用されます。この属性はデフォルトでドットになります。つまり、translation.localeが配列に分割されます。たとえば、前に渡したnestSeparatorがコロンの場合は、構成ファイルをtranslationに設定する必要があります。 :location = .. ここではこれ以上追求しません。これは単なる文字列操作にすぎません。 最終的に分析されたdataArrayは次のようになります


コードをコピーします コードは次のとおりです:(
, タイムゾーン] => アジア/上海
。 Config_Ini の親クラスは Zend_Config です。


クラス Zend_Config は Countable、Iterator を実装します

Zend_Config は Countable インターフェース (count() メソッドを含む)、Iterator インターフェース (current、key、next、rewind、valid およびその他のメソッドを含む) を実装します

Zend_Config のコンストラクターは、上で分析した 2 次元配列を _data に配置します。


ここでは 2 つの機能に焦点を当てます


__set と __get


マジックメソッド __get により、config->field を使用して構成値を確実に取得できます

マジック メソッド __set は、設定ファイルを変更できるかどうかを確認します。この属性が設定されている場合は、__setter を設定できます。それ以外の場合は、AllowModifications の例外もスローされます。オプションの 1 つ。

この時点で、記事の冒頭にあるデモコードを見てください


date_default_timezone_set($config->タイムゾーン);

ここで ->timezone が使用できる理由は、config の属性の代わりに __get が使用されているためです。

Zend の Config メカニズムの分析が終了しました。


http://www.bkjia.com/PHPjc/327070.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/327070.html

技術記事


Zend の Config クラスは Zend_Config_Ini コードにあります $config = new Zend_Config_Ini("/var/www/html/config/config.ini", "general"); date_default_timezone_set($config-timezone);

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