SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend Framework入門

Zend Framework入門(8):ビューの処理の流れを理解しよう

Zend Frameworkによる実践的なPHPアプリケーション開発 8

フィルタ

 フィルタは、ビュースクリプトを実行した後に、表示内容処理を加えるための仕組みです。Zend_Viewのためのフィルタには最初から用意されているものがないため、必要に応じて自分で作成する必要があります。

 フィルタはfilterメソッドを持つクラスとして定義します。なお、フィルタの名前やファイル名には次の命名規則があります。

Zend_Viewフィルタ要素の命名規則
要素命名規則
ファイル名<フィルタ名(先頭大文字)>.php
クラス名Zend_View_Filter_<フィルタ名(先頭大文字)>

 フィルタを作成したら、まずそのファイルを「ビューフィルタ関係のファイルを配置するフォルダ」に設置してください。実際にフィルタを使う際には、Zend_ViewのsetFilterメソッドかaddFilterメソッドを利用して、このフィルタをZend_Viewのインスタンスに登録します。

 Zend_Viewのフィルタ関係のメソッドは次のとおりです。

Zend_Viewフィルタ関係のメソッド
パラメータ内容
setBasePathビュースクリプト、ヘルパとフィルタの置かれているパスを指定。
setFilterフィルタを設定します。それまでにフィルタが設定されていた場合には、それは取り除かれます。
addFilterフィルタを追加します。フィルタは追加された順番で適用されます。
getFilter($name)$nameという名前のフィルタを取得します。
addFilterPath($path)$pathをフィルタが記述されたファイルを探す際に、調べるパスに追加します。
setFilterPath($path)フィルタが記述されたファイルを探すパスとして$pathを登録します(それ以前に登録されていたパスがあった場合は、削除されます)。
getFilterPath($name)$nameという名前のフィルタへのパスを取得します。

 では、簡単な例を見てみます。この例では出力された結果にPタグがあった場合、その内側をiタグで囲うようにしてあります。

フィルタを使うための記述の追加(index.php)
...
$view->setEncoding('Shift_JIS');
$view->setEscape('htmlentities');
$view->setFilter('myFilter');
...
簡単なフィルタ(MyFilter.php)
<?php
class Zend_View_Filter_MyFilter
{
    public function filter($buffer) {
        $buffer = preg_replace('/\<p\>/','<p><i>',$buffer);
        $buffer = preg_replace('/\<\/p\>/','</i><p>',$buffer);
    return $buffer;
    }
}

 なお、このフィルタのファイルはViewのフィルタフォルダ「C:\codezine\zendapps\views\filters」に設置してください。

 これを実行した例は次のようになります。

フィルタの実行結果
フィルタの実行結果

 以前pタグで囲われていた部分(「<b>エスケープのテスト</b>」となっている部分)がiタグで囲われて、斜体になっています。

今回のまとめ

 今回はZend_View全体の処理の流れと、エスケープ処理、そしてフィルタについて説明しました。次回はビューヘルパについてと、テンプレートエンジンのSmartyとZend_Viewの連携について説明します。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Zend Framework入門連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2716 2008/07/23 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー