スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Zend Framework 0.9.0がリリース

Zend Framework 0.9.0がリリースされました。
結構順調なペースでリリースされてますね。

今回の変更点の詳細は下記。(もう全部説明するのは面倒)
http://framework.zend.com/changelog

だってZend_Dbは相変わらず使いづらいし、かわりになるライブラリを自分で作っちゃっているし。

今回被害を受けた点は、ZendのRegistry部分。
この機能は、ある変数をグローバルにセットして、どこからでも呼び出せるという機能。

簡単に説明すると、

$GLOBALS['data'] = 'データ';

とすると、そのファイルをrequire(include)しているファイルから

echo $GLOBALS['data'];

とすると、「データ」って内容がエコーされる。
つまりrequireしているファイル内で変数を持ちまわせる事が出来るんだな。

この方法は便利ではあるけれど、危険な部分も兼ね備えている。
例えば、別々の箇所でグローバルの変数名に同じ名前を付けて、それらのファイルをrequireしちゃった時にはどうなるか分からないし、そもそもどこでも呼べてしまうので、必要ないのに使えてしまう変数になってしまう可能性もある。

それでやっとZend_Registryの話になるんだけど、こいつを使うと、とりあえずグローバル変数としてセットはしておくけど、それを使えるのはRegistryから値を取得した箇所(範囲)のみになる。

つまり、$dataっていうグローバル変数を使いたい場合には予めセットしておいて、使いたいメソッド内で毎回それを使えるように値を呼び出す必要がある。

面倒ではあるけど、こうする事によってどの値がグローバルにされているか分かるし、どこでその値を使っているかが分かるから便利。

あ、Zend Framework 0.9.0の話から脱線してしまった。

このZend_Registryというのは、0.8.0までは

$data = 'レジストリです';
Zend::Registry($data); // グローバル変数としてセットする
Zend::Register('data', $data); // $dataというグローバル変数を取得して、$dataとして扱えるようにする

という形だったんだけど、0.9.0では

Zend_Registry::set($data);
Zend_Registry::get(data, $data);

のようにしなければならない。

おまけにZend/Registry.phpを予めrequire(include)しておかないと動作しない

この機能を使ってるところはめちゃめちゃ多いのでファイルの修正そのものは簡単でも、0.8.0から0.9.0に入れ替えるタイミングと修正したファイルを実環境に移動させるタイミングが難しいなぁ。
スポンサーサイト

この記事のトラックバックURL

http://kgworks.blog47.fc2.com/tb.php/102-a43bfe2e

コメント

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

テクノラティ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。