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

Zend Framework チュートリアル Zend_Registry オブジェクトの使用状況の分析

Dec 26, 2016 pm 03:35 PM

この記事の例では、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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