忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/27 06:09 |
ZF1.11:Zend_Registry
Zend_Registryとは、一言で言うとまああれだ、グローバル変数。
クラス内とかメソッド内とかスコープを気にせず好きなところでZend_Registry::set('hoge', 'fuga');ってやって、それ以降の好きなところでZend_Registry::get('hoge');ってすると'fuga'を取得できます。

使いどころは何処かというと、スクリプトのパスやデータベースのパスワード等、最初に定義したら以後変更する必要のないものとなります。
大抵そういうのはdefine()で定義していると思いますが、define()は配列やオブジェクトを入れられないという欠点があります。
その点Zend_Registryは配列やオブジェクトをそのまま突っ込むことができるので、使い回しが格段に楽になります。
	$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
	Zend_Registry::set('link', $link);
とすると、以後はDBに接続する必要があればZend_Registry::get('link')でDB接続オブジェクトをシングルトン的に取得できます。

ただZend_Registryはsetで簡単に上書き可能なため、結局はグローバル変数を使用するのと同じ危険性をはらんでいます。
気がつかないところで上書きされるとエラーの温床になるので、運用にはルールを義務づけるとよいでしょう。

実は、$_REQUESTあたりのスーパーグローバル変数に値を突っ込むとクラスとかスコープとかを完全に無視してどこからでも読むことができるので、完全にZend_Registryの代用になったりするのですが秘密です。
まあ、そういう行儀の悪いことをしてはいけません。
PR


2011/04/11 23:19 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<今週の実績 2011/04/17 | HOME | 買ったものリスト 2011/04/10>>
忍者ブログ[PR]