SHOEISHA iD

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

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

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

Zend Framework入門

Zend Framework入門(9):
Zend Frameworkにおけるビューの処理 - Zend_View(前編) -

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


プレースホルダ

 プレースホルダは、文書などを保持するための仕組みです。例えば、処理の早い段階で作成した文書を、処理の後の方で出力したい場合などに利用できます。この他にも、出力されるべき内容を「吸い取る」ために利用することもできます。

単純なプレースホルダ

 プレースホルダの最も簡単な使い方としては、単純に情報を保存するものがあります(単純に連想配列のような使い方をしている、と思っていただいても良いかもしれません)。引数に与えられた名前に、setで情報を保存します。また、情報を取り出したい場合にはメソッドなしでplaceholderを呼び出します。

 例えば、titleという名前に情報を保存したい場合には次のようになります。

単純なプレースホルダ
//プレースホルダへの値の保存
$this->placeHolder('title')->set('簡単なメモ');
...
//プレースホルダへ保存された値の利用
<?php echo $this->headTitle($this->placeHolder('title')); ?>

コンテンツの捕獲

 描画されるべきコンテンツをそのまま出力するのではなく、一旦保存しておきたいと思う場合があるかもしれません。その場合にはプレースホルダのcaptureStartを利用できます。

 これは、placeHolderのcaptureStartメソッドを呼び出した時点からcaptureEndメソッドを呼び出した時点までの間に描画された内容を、プレースホルダに「吸い取る」方法です。例えばサンプルでは、アクションコントローラ内でプレースホルダのmemoListという名前に内容を吸い出しています。

コンテンツの捕獲(C:/codezine/zendapps/controls/IndexController.php)
...
class IndexController extends Zend_Controller_Action
{
...
    public function indexAction()
    {
       //プレースホルダーで捕獲する
       $this->view->placeHolder('memosList')->captureStart();
       echo $this->view->htmlList($this->memos, true, null, true);
       $this->view->placeHolder('memosList')->captureEnd();
...

 捕獲されたコンテンツは通常のプレースホルダと同様に、メソッドを特に指定しないでプレースホルダを呼び出すことで取得できます。

捕獲したコンテンツの利用(C:/codezine/zendapps/views/scripts/index/index.phtml)
...
<h2>今までのメモ</h2>
<?php echo $this->placeHolder('memosList') ?>

<h3>上の内容をHTMLにしたもの</h3>
<?php echo $this->preHelper($this->placeHolder('memosList')) ?>
...

 これはサンプルの下部にある今までのメモを出力する部分で利用されています。なお、ここで使用しているpreHelperは自作のビューヘルパーで、受け取った文字列をpreタグで囲います。自作のビューヘルパーについては次回説明する予定です。

次のページ
具体的なプレースホルダ

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

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/2842 2008/09/01 16:30

イベント

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

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

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

メールバックナンバー