検索
ホームページphp教程PHP开发Zend Framework チュートリアル Zend_Registry オブジェクトの使用状況の分析

この記事の例では、Zend Framework チュートリアルでの Zend_Registry オブジェクトの使用法を説明します。以下のように、参考のために全員と共有してください:

オブジェクト レジストリ (レジストリ) の使用

オブジェクト レジストリ (またはオブジェクト ウェアハウス) は、アプリケーション空間全体内でオブジェクトと値を保存するために使用されるコンテナです。オブジェクトをそこに保存すると、プロジェクト全体のどこでも同じオブジェクトを使用できます。この仕組みはグローバルストレージに相当します。

さらに、このクラスは配列オブジェクトなので、配列形式を使用してクラス メソッドにアクセスできます。

1. レジストリに値を設定します

コンテンツをレジストリに保存するには、静的メソッド set() を使用できます。

例 1. set() の使用例:

Zend_Registry::set('index', $value);

$value には、オブジェクト、配列、またはスカラーを指定できます。 set() を再度使用すると、レジストリ内の既存の値に新しい値を設定できます。

インデックス パラメーターは、配列のインデックス/キー名と同様に、配列を使用する場合と同様に、スカラー、つまり文字列または整数にすることができます。

2. レジストリ内の値を取得する

get() メソッドを使用して、レジストリ内の項目の値を取得できます。

例 2. get() メソッドの例:

$value = Zend_Registry::get('index');

getInstance() は静的レジストリ オブジェクトを返します。
レジストリ オブジェクトは反復可能です。

例 3. レジストリ オブジェクトを反復処理します:

$registry = Zend_Registry::getInstance();
foreach ($registry as $index => $value) {
  echo "Registry index $index contains:/n";
  var_dump($value);
}

3. レジストリ オブジェクトを作成します

静的メソッドを使用してレジストリ オブジェクトにアクセスするだけでなく、通常のオブジェクトを使用するのと同じように、レジストリ オブジェクトを直接インスタンス化することもできます。同じ。

静的メソッドを通じてレジストリ オブジェクトのインスタンスにアクセスすると、静的ストレージに便利で、プログラム内のどこからでもアクセスできます。

従来の新しい方法を使用してレジストリのインスタンスを作成する場合は、配列を使用してレジストリの内容を初期化できます。

例 4. レジストリ オブジェクトを作成する

$registry = new Zend_Registry(array('index' => $value));

このオブジェクト インスタンスを作成した後、配列オブジェクト メソッドを使用してそれを使用することも、静的メソッド setInstance( ) 例。

例 5. 静的レジストリを初期化する例

   
$registry = new Zend_Registry(array('index' => $value));
Zend_Registry::setInstance($registry);

静的レジストリ オブジェクトが初期化されている場合、setInstance() メソッドは Zend_Exception をスローします。

4. 配列のようにレジストリオブジェクトにアクセスします

一度に複数の値にアクセスしたり設定したりする場合は、配列メソッドを使用すると非常に便利です。

例 6. 配列メソッドへのアクセス例:

$registry = Zend_Registry::getInstance();
$registry['index'] = $value;
var_dump( $registry['index'] );

5. オブジェクト メソッド アクセス レジストリ

オブジェクト指向スタイルを使用してレジストリ オブジェクトと属性名にアクセスすることも便利であることがわかります。オブジェクト内の はインデックスとして使用されます。 これを行うには、ArrayObject::ARRAY_AS_PROPS オプションを使用してレジストリ オブジェクトを作成し、静的インスタンスを初期化する必要があります。これは、静的レジストリに初めてアクセスする前に行う必要があります。このオプションを使用する場合、PHP の一部のバージョンにはバグがあるため、このオプションには注意してください。

例 7. オブジェクト形式でのアクセス:

//在你的bootstrap代码中:
$registry = new Zend_Registry(array(), ArrayObject::ARRAY_AS_PROPS)
Zend_Registry::setInstance($registry);
$registry->tree = 'apple';
.
.
.
//在程序的任何其它地方:
$registry = Zend_Registry::getInstance();
echo $registry->tree; // echo's "apple"
$registry->index = $value;
var_dump($registry->index);

6. インデックスが存在するかどうかをクエリする

静的メソッド isRegistered() を使用して、特定のインデックスに対応する値が設定されているかどうかをクエリできます。

例 8. isRegistered() 例:

if (Zend_Registry::isRegistered($index)) {
  $value = Zend_Registry::get($index);
}

配列オブジェクト内の特定のインデックスの値が設定されているかどうかを確認するには、通常の配列と同じように isset() 関数を使用できます。

例 9. isset() 例:

$registry = Zend_Registry::getInstance();
// using array-access syntax
if (isset($registry['index'])) {
  var_dump( $registry['index'] );
}
// using object-access syntax, if enabled
if (isset($registry->index)) {
  var_dump( $registry->index );
}

7. レジストリ オブジェクトを拡張する

静的レジストリ オブジェクトは、Zend_Registry クラスのインスタンスです。機能を追加したい場合は、Zend_Registry クラスを継承し、このクラスを使用してオブジェクト レジストリにアクセスするように指定できます。静的メソッド setClassName() を使用して、使用するクラスを指定できます。このクラスは Zend_Registry のサブクラスである必要があることに注意してください。

例 10. 静的レジストリのクラス名を指定します:

Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);

レジストリにアクセスした後にクラス名を設定しようとすると、レジストリは例外をスローします。このクラス名をブーストラップ コード (つまり、index.php) に設定することをお勧めします。

8. 静的レジストリを削除します

これは必須ではありませんが、_unsetInstance() メソッドを使用してレジストリの静的インスタンスを削除できます。

[注意] データ損失のリスク

_unsetInstance() を使用すると、静的レジストリ内のすべてのデータが失われ、復元できなくなります。

_unsetInstance() メソッドが必要になる場合があります。たとえば、レジ​​ストリ オブジェクトが初期化された後に setInstance() または setClassName() を使用する場合は、これらのメソッドを使用する前に _unsetInstance() を使用して静的インスタンスを削除できます。

例 11. _unsetInstance() 例:

Zend_Registry::set('index', $value);
Zend_Registry::_unsetInstance();
// 改变我们要使用的类
Zend_Registry::setClassName('My_Registry');
Zend_Registry::set('index', $value);

この記事が、Zend Framework フレームワークに基づいた PHP プログラミングの皆様のお役に立てれば幸いです。

Zend Framework チュートリアル Zend_Registry オブジェクトの使用状況分析に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境