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->タイムゾーン);
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 メカニズムの分析が終了しました。
www.bkjia.com
truehttp://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);

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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

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