Zend Framework 1.8で垣間見るコーディング規約の変更

ZF-6331によると、Zend Frameworkはname space対応するにあたり、コーディング規約に変更が入るらしいです。これまでのハンガリアン記法*1からPEAR2コーディング規約への準拠へと変わるそうな。主な変更点は、 これまでインターフェース名は _Interfaceで終…

フロントでキャッシュするプラグイン

※フロントコントローラーのdispatchでdispatchループをbreakできるコードを入れておく必要があります。*1 getCache()->load($id)) { $this->_isCacheHit = tr…

Zend_Application(3) リソースコンテナをアクションコントローラー内から使う方法

Zend_Application絡みでコンテナをどうやって取得する?というのが残る課題だったような気がしますが、getInvokeArgを使う方法はすっきりしててうまいですね。 getInvokeArg('bootstrap'); $router = $bootstrap->getResource('router'); #fw-mvcのログより …

Zend_Application(2) /Zend FrameworkにおけるDIコンテナ活用のメリットについて/

PHPでのDIコンテナのわかりやすい説明としては「最小のDIコンテナ in PHP」や「DIコンテナなんていらない」の中で説明されているし、DIコンテナをより詳細に推し進めた形としてはSeasar2のドキュメントか何かを見ていただいた方がいいと思います。DIコンテナ…

Zend Frameworkの”不思議”なところ

いろいろ触って、ソースもそれなりに見てきて思うんですが、ZendFrameworkにはちょっと不思議なところがあります。 たとえばZend_Formのデコレーター。これ便利ですごくいいんですけど、だからこそなんですが、デコレーターっていう名前にしていて、開発者ブ…

Zend_Application(1)

SVNに1.8のリリースタグが作られました。いよいよZend_Applicationがリリース待ちですね。 というわけで、試してみました。 マニュアル(英語版)はここでリリース済み、日本語版も間もなく出る?でしょう。ファイルリストはこんな感じ Application.php Appli…

第1回Zend Framework勉強会@Tokyoに参加してきました

発表のダイジェストはlllnorikolllさんがまとめて下さってますので、私は雑感を。まとめじゃないです! 携帯対応とか 携帯対応については、いくつかの現場で体験してきたので、今回の発表はよくわかりました。 全部SJISで自社サーバ環境ならSET NAMESじゃな…

Zend_Formを使うなら

Zend_Formについて、ZFのメイン開発メンバーの一人、[Matthew Weier O'Phinney]が連載を開始しているので、要チェックかもしれません。 第1回はシンプルなデコレーター、第2回はデコレーターをレイヤー化して適用する方法が書かれていますね。 http://weie…

FlexとZend_Amf

VBAとか、軽視されるケースが結構あるけれど、Webフレームワークといっても、いまだにACCESS98のレベルにすら到達していないっていう気がしなくもない(って何がw) そういう意味ではクライアントインターフェースをお手軽に提供するFlex連携は必須技術の一…

Zend Framework勉強会に参加します

明日、日頃からお世話になっているZend Frameworkさんの勉強会が開かれるので参加させていただくことになりました。 勉強会というものに参加したことがないので、とんでもない勘違いをしていないか、ちょっと心配です。とりあえず、持ち物はデジカメとビデオ…

Reflectionに対してcall_user_func_arrayは使えない??

PHP

ReflectionFunctionを併用して関数の遅延評価をテストしていたのですが、思わぬ挙動に・・・ ReflectionFunctionの基本動作の確認 invoke('/php/i', 'PHP is the web scripting language of choice.') ); //int(1) 関数を動的に与えるのはちょっとキモイです…

複数サーバー間セッションにZend_Cacheを利用する

Zend_Cacheのバックエンドmemcachedはとても便利ですね。請負で常駐で入って昨年3月にリリースされたサービスでも使いました。設計からリリースまでほとんどの作業をこなしたのですが、そこでは、会社の方針でPHPセッションは使用禁止*1、スケール目的にフ…

echo "test"; exit();

存在しないコントローラーへのリクエストをテストしていたのですが、なぜかエラーコントローラーからのレスポンスが得られなくなっていました。例外が投げられることもなく、画面が更新されないという現象に悩まされました。 同じURLをZend Debuggerに通して…

リクエストに対するフィルター・バリデーションについて

リクエストに対するフィルタやバリデーションを実施するのに、たとえばZend_Formを使っている分にはZend_Formに設定するフィルタやバリデーションを使えるからよいのですが、それ以外のデータについてはどうでしょうか。 Zend Frameworkでは、リクエストのバ…

素潜りな3月

成功と失敗 失敗プロジェクトに参加すると「そこは無理筋だったなぁ」とか「ここはあぁすればよかった」とかいう反省が生まれてきます。フリーのエンジニアとしては、サービスの要件定義部分から関与できるケースは少ないので、デスマーチな状況に入ってから…

Zend_Cache_Backend_Fileの限界点

ZendFrameworkのファイルをバックエンドとしたキャッシュは他のコンポーネントや拡張を必要としないのでお手軽に実施できます。 ただ、キャッシュエントリーが多くなるとキャッシュのクリアーなどで若干問題が発生するかもしれません。 複合的な要因で発生す…

そういうのを遅延ロードとは言わないのでは?

nullを返さないためにgetterで初期化するのはありだけど、初期化するためにgetterを呼ぶのは違う気がする。

既存システムにページキャッシュを入れてみる

既存CMSで構築されたシステムを移植する作業中なのですが、急ぎ負荷問題だけ解消しておきたいサイトがあったので先行してキャッシュだけ導入しておきました。 Zend_Cacheのページキャッシュが適用できるようなサイトならこの作業は数分で済みます。オプショ…

simplexml_load_file simplexml_load_string

simplexml_load_fileで、ちょっとん?だったのでメモ。ZFのissueに上がっていたのですが、今は見失ってしまいました・・クローズしたのかもしれない。 ほぼ同じ構造のドキュメントですがZend_Config化すると$config->files->file->id等で値を取得しようとし…

有用なアーキテクチャ間の衝突について

Webアプリを構築するためにフレームワークや既存CMSを使うケースがありますが、それぞれに適したアーキテクチャがあります。通常、小さなシステムでは一つのアーキテクチャで貫徹できますが、その分、他のアーキテクチャを組み入れる余地が少なく、大型のフ…

エレベーターのリファレンスモデル

エレベータの要求仕様 第2回で紹介したように、分科会では一度モデリングに行き詰まり、概念モデルからやり直しを行いました。従って以下の要求仕様を参照すると分かりますが、「キャビンが呼び出され」→「移動階に移動して」→「ドアが開いて降りる」といっ…

View->renderで__toString可能なオブジェクトを返してみる

Viewでの処理結果をシームレスにキャッシュするため、レスポンスオブジェクトに追加するデータを文字列データではなく、__toString可能なオブジェクトにしてみました。PHP的には文字列で格納してゴリゴリ追加していくというのも悪くはないのですが、個人的に…

表層系と処理系でコントローラー

このへんの続き。 http://d.hatena.ne.jp/noopable/20090201/1233445916 http://d.hatena.ne.jp/noopable/20090201/1233528374 これを実現したいとする。 処理の流れを再確認 ルーティング ページクラス(ページコントローラーを起動) どんなページにするの…

もうおまえらPHPerは正規表現をブログにうpするんじゃねえ!

と言われても仕方がないと、404の人が書いてらっしゃいます。 実を言うと、私も正規表現は苦手です。正直言って、いろんな勘違いをそのまま公開している口なので、もうそこは「ごめんなさい」としか言えません。*1 個人差のある問題なのに、PHPerはと言われ…

PHPの配列記法で関数オブジェクト

C++などは()をオーバーロードして関数オブジェクトを作るらしいですが、PHPでも配列記法やアロー演算子のオーバーロードが可能なので、似たような関数オブジェクトは作れそうです。 http://d.hatena.ne.jp/noopable/20090316/1237166080 ここでやった手法は…

Webフレームワークとノーフリーランチ定理

ちょっとでもフレームワークの流儀や対象範囲から外れたことをやろうとすると、 とてつもなく手間がかかるか、全く出来ないかのどちらかで、 適切でないフレームワークを使うくらいなら、個別にスクラッチで書いた方がよっぽどマシという状況が起こりうる。 …

キャッシュのおさらい

フレームワークの性能を向上させる手掛かりとして、キャッシュについて考えてみます。 フレームワークによるパフォーマンス低下 フレームワークを利用する場合、パフォーマンスが犠牲になることはよくあります。フレームワークを設計する側からすると抽象化…

関数オブジェクトと関数型言語的手法の違い

PHPで関数オブジェクトを作ってみました。Webフレームワークでのキャッシュコントロールを正確に行うのが目的なのですが、作ってみると関数型言語との手法に違いがあることがわかりました。 関数オブジェクトAbstract*1 関数型の手法を几帳面にエミュレート…

Zend_Configはイテレーターを壊しても大丈夫になる。。

イテレーターって、要素をunsetしたら無効になるもんだと思ってましたが、unsetしても動作するのが普通なんでしょうか。Zend_Configがunsetしてもnextが有効になるような実装に変わるようです。

Viewの挙動に、もやっと

Zend_View周辺(ViewRenderer、Zend_Layout、Zend_Controller_Action)の仕様にもやっとしてます。 ViewRenderer http://d.hatena.ne.jp/noopable/20090211/1234300771 ここでも書きましたが、ViewRendererを有効にすると、基本的にViewRendererのビューオブジ…