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

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

Jul 21, 2016 pm 03:10 PM
config ini new zend コード 分析する に基づく 応用 機構

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 までご連絡ください。

ホット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)

iPhoneのホーム画面から削除を元に戻す方法 iPhoneのホーム画面から削除を元に戻す方法 Apr 17, 2024 pm 07:37 PM

ホーム画面から重要なものを削除してしまい、元に戻そうとしていますか?さまざまな方法でアプリのアイコンを画面に戻すことができます。 iPhoneでホーム画面から削除を元に戻す方法 前述したように、iPhoneでこの変更を復元する方法はいくつかあります。方法 1 – App ライブラリのアプリ アイコンを置き換える App ライブラリから直接ホーム画面にアプリ アイコンを配置できます。ステップ 1 – 横にスワイプして、アプリ ライブラリ内のすべてのアプリを見つけます。ステップ 2 – 前に削除したアプリのアイコンを見つけます。ステップ 3 – アプリのアイコンをメインライブラリからホーム画面上の正しい場所にドラッグするだけです。これが応用図です

PHP における矢印記号の役割と実際の応用 PHP における矢印記号の役割と実際の応用 Mar 22, 2024 am 11:30 AM

PHP における矢印記号の役割と実際の応用 PHP では、通常、オブジェクトのプロパティとメソッドにアクセスするために矢印記号 (->) が使用されます。オブジェクトとは、PHP におけるオブジェクト指向プログラミング (OOP) の基本概念の 1 つで、実際の開発においては、矢印記号がオブジェクトを操作する上で重要な役割を果たします。この記事では、矢印記号の役割と実際の応用例を紹介し、読者の理解を深めるために具体的なコード例を示します。 1. オブジェクトのプロパティにアクセスするための矢印シンボルの役割 矢印シンボルは、オブジェクトのプロパティにアクセスするために使用できます。ペアをインスタンス化するとき

初心者から熟練者まで: Linux tee コマンドのさまざまなアプリケーション シナリオを探索する 初心者から熟練者まで: Linux tee コマンドのさまざまなアプリケーション シナリオを探索する Mar 20, 2024 am 10:00 AM

Linuxtee コマンドは、既存の出力に影響を与えることなく、出力をファイルに書き込んだり、別のコマンドに出力を送信したりできる、非常に便利なコマンド ライン ツールです。この記事では、入門から習熟まで、Linuxtee コマンドのさまざまな応用シナリオを詳しく見ていきます。 1. 基本的な使い方 まずは、teeコマンドの基本的な使い方を見てみましょう。 tee コマンドの構文は次のとおりです。 tee[OPTION]...[FILE]...このコマンドは、標準入力からデータを読み取り、データを保存します。

Copilot を使用してコードを生成する方法 Copilot を使用してコードを生成する方法 Mar 23, 2024 am 10:41 AM

プログラマーとして、私はコーディング体験を簡素化するツールに興奮しています。人工知能ツールの助けを借りて、デモ コードを生成し、要件に応じて必要な変更を加えることができます。 Visual Studio Code に新しく導入された Copilot ツールを使用すると、自然言語によるチャット対話を備えた AI 生成コードを作成できます。機能を説明することで、既存のコードの意味をより深く理解できます。 Copilot を使用してコードを生成するにはどうすればよいですか?始めるには、まず最新の PowerPlatformTools 拡張機能を入手する必要があります。これを実現するには、拡張機能のページに移動し、「PowerPlatformTool」を検索して、[インストール] ボタンをクリックする必要があります。

Linux の「.a」ファイルを作成して実行する Linux の「.a」ファイルを作成して実行する Mar 20, 2024 pm 04:46 PM

Linux オペレーティング システムでファイルを操作するには、開発者がファイル、コード、プログラム、スクリプトなどを効率的に作成および実行できるようにするさまざまなコマンドとテクニックを使用する必要があります。 Linux 環境では、拡張子「.a」を持つファイルは静的ライブラリとして非常に重要です。これらのライブラリはソフトウェア開発において重要な役割を果たし、開発者が複数のプログラム間で共通の機能を効率的に管理および共有できるようにします。 Linux 環境で効果的なソフトウェア開発を行うには、「.a」ファイルの作成方法と実行方法を理解することが重要です。この記事では、Linux の「.a」ファイルのインストールと構成方法を包括的に紹介します。Linux の「.a」ファイルの定義、目的、構造、作成および実行方法について見てみましょう。 Lとは何ですか

清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす 清華大学と Zhipu AI オープンソース GLM-4: 自然言語処理に新たな革命を起こす Jun 12, 2024 pm 08:38 PM

2023 年 3 月 14 日に ChatGLM-6B が発売されて以来、GLM シリーズ モデルは幅広い注目と認知を得てきました。特にChatGLM3-6Bがオープンソース化されてからは、Zhipu AIが投入する第4世代モデルに対する開発者の期待が高まっている。 GLM-4-9B のリリースにより、この期待はついに完全に満たされました。 GLM-4-9B の誕生 小型モデル (10B 以下) により強力な機能を提供するために、GLM 技術チームはこの新しい第 4 世代 GLM シリーズ オープン ソース モデル、GLM-4-9B をほぼ半年の期間を経て発売しました。探検。このモデルは、精度を確保しながらモデルサイズを大幅に圧縮し、推論速度の高速化と効率化を実現しています。 GLM 技術チームの調査はまだ終わっていない

Go 言語の利点と応用シナリオを探る Go 言語の利点と応用シナリオを探る Mar 27, 2024 pm 03:48 PM

Go 言語は、Google によって開発され、2007 年に初めてリリースされたオープンソース プログラミング言語です。シンプルで習得しやすく、効率的で同時実行性の高い言語となるように設計されており、ますます多くの開発者に好まれています。この記事では、Go 言語の利点を探り、Go 言語に適したいくつかのアプリケーション シナリオを紹介し、具体的なコード例を示します。利点: 強力な同時実行性: Go 言語には、同時プログラミングを簡単に実装できる軽量スレッドのゴルーチンのサポートが組み込まれています。 Goroutin は go キーワードを使用して開始できます

エージェントを一文で作成!ロビン・リー: 誰もが開発者になる時代が来る エージェントを一文で作成!ロビン・リー: 誰もが開発者になる時代が来る Apr 17, 2024 pm 02:28 PM

すべてを覆す大きなモデルが、ついに編集者の頭にたどり着いた。たった一文でできたエージェントでもあります。このように、彼に記事を与えると、1 秒以内に新鮮なタイトルの候補が出てきます。私と比較すると、この効率は稲妻のように速く、ナマケモノのように遅いとしか言​​いようがありません... さらに驚くべきことに、このエージェントの作成には実際には数分しかかからないということです。プロンプトは江おばさんのものです。そして、この破壊的な感覚も体験したい場合は、百度が立ち上げた新しいウェンシン インテリジェント エージェント プラットフォームに基づいて、誰でも無料で独自のインテリジェント アシスタントを作成できます。検索エンジン、スマート ハードウェア プラットフォーム、音声認識、地図、自動車、その他の Baidu モバイル エコロジー チャネルを使用して、より多くの人があなたの創造性を活用できるようにすることができます。ロビン・リー自身

See all articles