ホームページ > バックエンド開発 > PHPチュートリアル > Zend Framework チュートリアル Zend_Registry オブジェクトの使用状況分析、zendzend_registry_PHP チュートリアル

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

WBOY
リリース: 2016-07-12 08:56:09
オリジナル
907 人が閲覧しました

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

この記事では、Zend Framework チュートリアルの Zend_Registry オブジェクトの使用方法を例とともに説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

オブジェクトレジストリ(レジストリ)を使用する

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

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

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

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

例 1. set() の使用例:

リーリー

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

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

2. レジストリの値を取得します

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

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

リーリー

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

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

リーリー

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

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

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

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

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

リーリー

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

例 5. 静的レジストリの初期化の例

リーリー

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

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

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

例 6. 配列アクセスの例:

リーリー

5. オブジェクトモードでレジストリにアクセスします

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

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

リーリー

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

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

例 8. isRegistered() 例:

リーリー

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

例 9. isset() 例:

リーリー

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

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

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

リーリー

レジストリにアクセスした後にクラス名を設定しようとすると、レジストリは例外をスローします。このクラス名をブーストラップ コード (つまり、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相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • Zend 输出产生XML解析错误
  • 基于Zend的Config机制的应用分析
  • Zend Framework实现多服务器共享SESSION数据的方法
  • Zend Framework框架Smarty扩展实现方法
  • Zend Framework框架路由机制代码分析
  • Zend Framework实现留言本分页功能(附demo源码下载)
  • Zend Framework实现将session存储在memcache中的方法
  • Zend Framework分页类用法详解
  • Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
  • Zend Framework实现多文件上传功能实例
  • Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
  • Zend Framework入门知识点小结
  • Zend Framework教程之Zend_Config_Xml用法分析

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1113716.htmlTechArticleZend Framework教程之Zend_Registry对象用法分析,zendzend_registry 本文实例讲述了Zend Framework教程之Zend_Registry对象用法。分享给大家供大家参考,具...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート