Zend Framework
Zend_Formについて、ZFのメイン開発メンバーの一人、[Matthew Weier O'Phinney]が連載を開始しているので、要チェックかもしれません。 第1回はシンプルなデコレーター、第2回はデコレーターをレイヤー化して適用する方法が書かれていますね。 http://weie…
Zend_Cacheのバックエンドmemcachedはとても便利ですね。請負で常駐で入って昨年3月にリリースされたサービスでも使いました。設計からリリースまでほとんどの作業をこなしたのですが、そこでは、会社の方針でPHPセッションは使用禁止*1、スケール目的にフ…
リクエストに対するフィルタやバリデーションを実施するのに、たとえばZend_Formを使っている分にはZend_Formに設定するフィルタやバリデーションを使えるからよいのですが、それ以外のデータについてはどうでしょうか。 Zend Frameworkでは、リクエストのバ…
ZendFrameworkのファイルをバックエンドとしたキャッシュは他のコンポーネントや拡張を必要としないのでお手軽に実施できます。 ただ、キャッシュエントリーが多くなるとキャッシュのクリアーなどで若干問題が発生するかもしれません。 複合的な要因で発生す…
既存CMSで構築されたシステムを移植する作業中なのですが、急ぎ負荷問題だけ解消しておきたいサイトがあったので先行してキャッシュだけ導入しておきました。 Zend_Cacheのページキャッシュが適用できるようなサイトならこの作業は数分で済みます。オプショ…
イテレーターって、要素をunsetしたら無効になるもんだと思ってましたが、unsetしても動作するのが普通なんでしょうか。Zend_Configがunsetしてもnextが有効になるような実装に変わるようです。
Zend_View周辺(ViewRenderer、Zend_Layout、Zend_Controller_Action)の仕様にもやっとしてます。 ViewRenderer http://d.hatena.ne.jp/noopable/20090211/1234300771 ここでも書きましたが、ViewRendererを有効にすると、基本的にViewRendererのビューオブジ…
フロントコントローラーに安全かつ柔軟な設定レジストリを作ってみました。 上書き禁止なfrontControllerのZend_Config フロントコントローラーを拡張して、ReadOnlyなZend_Configオブジェクトを持たせます。 たとえば、フロントコントローラーで _config; }…
アクションコントローラーの再利用性を考慮するとViewRendererはなるべく使いたい。でも便利なものほど内部はブラックボックスになっていて微妙にわかりにくいことがあるのでメモ。 検討課題 アクションコントローラーを_forwardまたはActionStack等で使いま…
いままで、テストにはSimpleTestを使っていました。 CakePHPやethnaだとSimpleTestを使っていると思います。 ethna http://ethna.jp/ethna-document-dev_guide-misc-unittest.html CakePHP http://bakery.cakephp.org/articles/view/testing-models-with-cak…
Zend Serverがβリリースされているので、ローカルで試してみることにした。xamppと比べてみるのもいいかなと。 ダウンロードとライセンスの取得 http://www.zend.com/products/server/downloads ここからトライアル版とトライアルライセンスを取得する。※ラ…
ZendのMVCで単純にデフォルトのモジュールルートを使っている分には特に困ることはないのだが、CMSライクにURLをフルカスタマイズして利用する場合、逆引きの使い方にやや不安が・・・ リンク先はどのルートに格納されている? たとえば、あるページから別の…
前記事で、Zend_Registryの多用には要注意とだけ書いて、自分なりの使い方を書いてなかったのでメモ http://d.hatena.ne.jp/noopable/20090228/1235784269 とりあえず、基本パターンのおさらい 実行時設定はフロントコントローラーに登録する http://d.haten…
MLでの話を斜め読みしていると、パラメーターの引き渡しにZend_Registryを使うっていうアドバイスが乱発されているような気がする。 確かに、global変数にほいほい入れてしまうよりはマシなんだけど。そうは言っても、≒グローバルなZend_Registryを多用する…
DOMDocumentを使うのにCSSセレクタが使えるというので、Server Side Dom Scriptingに使ってみた。 処理の流れとしては、 XMLもしくはHTMLの文字列 をZend_Dom_Queryにセットする。 CSSセレクタで検索して結果を取得する。 結果はZend_Dom_Query_Resultオブジ…
http://d.hatena.ne.jp/noopable/20090224/1235429939 昨日、プラグインローダーでモデルをロードするっていう話を書いたばかりだけれど、MLで、ZF1.8に入るのか入らないのか、Zend_Application_Module_Autoloaderの話題が出ていた。 これを使うと getModel(…
モデルをロードする一番てっとり速い方法は、直接require_onceする方法かもしれない。 しかし、コントローラーを跨いだ処理だったり、コントローラーやビューを抽象化しながらモデルを扱いたい場合、個別に検索パスをハードコーディングする方法はできれば避…
ちょっとわかりにくいところがあったのでメモ Controller_FrontのdispatchからController_Dispatcher_Standardのdispatchが呼ばれる。クラスのロードはloadClassなのだが、その際、_curModuleがセット済みであることが必要になる。_curModuleと_curDirectory…
http://d.hatena.ne.jp/noopable/20090212/1234388931 ここで書いた、コントローラー間のメッセージキューだが、Zend_Queueがincubatorに入っているので、少し意識して改造した方がいいかもしれないと思った。 Zend_Queueを読んだ Zend_QueueはアマゾンのSQS…
実はこれ http://framework.zend.com/community/contribute 企業でも近頃いろんなオープンソースを扱うようになってきたけれど、納品物にOSSを含む時、ライセンスの問題を本当にクリーンにしたかったらこういう手だろうなぁっていう。たとえば、このブログで…
現在のルーターの仕様は、ルートをハッシュ配列に入れて、順に一致をチェックしながら決定する仕組み。あらゆるルートは検索を開始する前に登録するのが基本。URLのassemble時に名前指定でルートを特定してURLに変換するため、名前付きで登録されていないル…
ActionStackとViewRendererとZend_Layoutを組み合わせると、ページ構成を決定するコントローラーから任意のコントローラー経由で収集したコンテンツをレイアウトの各セグメントで利用できるようになる。 たとえば、メニューに投入するコンテンツは$this->lay…
http://framework.zend.com/wiki/display/ZFDEV/Zend_Controller+2.0#Zend_Controller2.0-IntegratethePageControllerpattern Zend_Controllerのロードマップにページコントローラーパターンがある。 # wikiが古いだけで、ページコントローラーパターンって…
あるアクションコントローラーから、複数の別のコントローラーに情報を伝達しながら処理を渡したいというニーズがあったので、既存の転送とは別にメッセージキューを利用して計画的な処理チェーンを作成できるようにしてみました。 このアイデアは、Presenta…
View関連 ViewRendererを使っていると、特別な処理をしないかぎり、どのアクションコントローラーでも同じviewインスタンスを使用する。ViewRendererのinitViewの最後の処理でセットされている。 Viewに対して参照でモデルを投入する際は、コントローラー間…
http://d.hatena.ne.jp/noopable/20090207/1233957428 これの続きで 要件 コントローラーの出力内容についてはViewRendererで作成 Zend_DojoのcontentPaneでラップ、その後タブコンテナでラップ レイアウトにはdojoソースを出せるものを使用 以上の要件を ht…
dojoのレイアウト機能を利用する場合、レイアウトの最小単位をcontentPaneとし、tabContainerやaccordionContainerなどのレイアウト用コンテナーに格納する。 フレームワーク的にはZend_DojoのcontentPaneでコンテンツを包むことになる。 ただし、Ajaxで動的…
Zend_View_Filterというのは、Zend_View_Abstract内の記述。実際には、プラグインパスを与えてる際のクラスプレフィックスとしてZend_View_Filter_がデフォルトになっているだけで、Zend_Viewのディレクトリにはフィルターは登録されていない。(いずれ、登…
個人的にはdojoの指定はコントローラーの基底にこんな感じで作ってある view); $this->view->dojo()->setLocalPath('/externals/dojo/dojo/dojo.js') ->registerModulePath('flower', '../../flower') ->requireModule('flower.Tools') //->requireModule('d…
Zend_Dojoを使ったレイアウトをこなすには、ViewRendererがビュースクリプトをレンダリングした後、かつレイアウトスクリプトでヘッダを吐く前に、Dojoベースのレイアウトはすべて準備しておく必要があり、それを解決する方法は・・・ってことで。この解決を…