SHOEISHA iD

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

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

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

symfony入門

symfony入門(5):symfonyプログラミング 開発のテクニック(中篇)

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

プラグインを利用した機能追加

 symfonyの特徴の一つは、プラグインを利用した機能追加ができることにあります。

プラグインを見つける

 Symfony Webサイトの「Symfony plugins」には、現在利用できるsymfonyプラグインがリストアップされています。例えば次のようなものがあります。

symfonyで利用可能なプラグインの一部
プラグイン名説明
sfYUIPluginYahoo! UI ライブラリ
sfOpenOfficePluginOpenOfficeドキュメントを出力可能にする
sfThumbnailPluginサムネイルを出力する
sfDoctrinePropelの代わりにDoctrine model layerを利用可能にする
sfControlPanelPluginsymfonyプロジェクト管理用のWebインターフェイス
sfCryptPluginmcryptを利用した暗号化関連機能を提供する
sfGuardPluginsymfonyの標準セキュリティ以上の認証機能を提供する
sfFeedPluginRSSフィード
sfShoppingCartPluginショッピングカート
sfSmartyViewPluginSmartyテンプレートエンジンを利用可能にする

プラグインをインストールする

 今回はSmartyプラグインを例にとり、インストールしてみます。インストールはsymfony同様に、PEARを用いるのが簡単です。

cd myproject
symfony plugin-install http://plugins.symfony-project.com/<プラグイン名>
symfony cc

 またPEARチャンネルからインストールする場合は

symfony plugin-install <チャンネル名>/<プラグイン名>

 とします。

プラグインインストール例(sfSmartyViewPlugin)
>symfony plugin-install http://plugins.symfony-project.com/sfSmartyViewPlugin
>> dir+      C:\Program Files\Apache Softwar...hannel.pear.symfony-project.com
>> plugin    installing plugin "http://plugi...project.com/sfSmartyViewPlugin"
>> pear      downloading sfSmartyViewPlugin-0.1.3.tgz ...
>> pear      Starting to download sfSmartyViewPlugin-0.1.3.tgz (125,463
>> pear      bytes)
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ..
>> pear      ....done: 125,463 bytes
>> pear      install ok:
>> pear      channel://pear.symfony-project.com/sfSmartyViewPlugin-0.1.3

モジュールを含んだプラグインの設定

 一部のプラグインはモジュールをそのまま含んでいます。その場合、「settings.yml」でモジュールを指定する必要があります。

settings.yml
all:
  .settings:
    enabled_modules:  [default, sfMyPluginModule]

プラグインの構造

 プラグインは一つのプロジェクト用のフォルダ構造を有しており、次のようになっています。

プラグインのフォルダ構造
<プラグイン名>/
  config/
    *schema.yml        (データスキーマ)
    *schema.xml
    config.php         (プラグイン固有の設定)
  data/
    generator/
      sfPropelAdmin
        */             (アドミンジェネレーターのテーマ)
          templates/
          skeleton/
    fixtures/
      *.yml            (fixturesファイル群)
    tasks/
      *.php            (Pake タスク)
  lib/
    *.php              (クラス群)
    helper/
      *.php            (ヘルパー群)
    model/
      *.php            (モデルクラス群)
  modules/
    */                 (モジュール)
      actions/
        actions.class.php
      config/
        module.yml
        view.yml
        security.yml
      templates/
        *.php
      validate/
        *.yml
  web/
    *                  (webリソース)

 このフォルダ内のファイル群を変更することは通常なく、カスタマイズは基本的にアプリケーションフォルダ内の「config/app.yml」で行います。

all:
  <プラグイン名>:
    <設定項目>:    <値>
Smartyプラグイン
 前回紹介した通り、Smartyプラグインが出ました
 現在のバージョンは「0.1.3」で、まだまだ発展途上のようです。実際にプラグインをインストールした後は、アプリケーションの「config」フォルダ内に「module.yml」を作成し次のように設定します。
module.yml
all:
  view_class: sfSmarty
 さらに、Smartyライブラリの展開先を「apps.yml」に記述します。
apps.yml(抜粋)
all:
  sfSmartyView:
    class_path: Smarty/libs  (Smartyライブラリの場所)
 この場合、プロジェクトフォルダ内「lib」以下にSmarty-2.6.18.tar.gzを展開し、フォルダ名「Smarty-2.6.18」を「Smarty」へ改名して使っています。
 マニュアルの例を抜粋すると、次のように記述できるようです。
layout.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
{include_http_metas}
{include_metas}
{include_title}
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
{$sf_data->getRaw('sf_content')}
</body>
</html>
indexSuccess.tpl
<div>
<h2>You did it…</h2>
<p>this is the first Smarty template</p>
</div>
 基本的にテンプレートの拡張子は「.php」から「.tpl」に変わっています。拡張子以前の命名規則は変わりません(<アクション名><実行結果>.tpl)。テンプレートエンジンにSmartyを使用する設定にはなりましたが、symfonyのヘルパー群もすべて使うことができます。例えば
<?php echo link_to($name="home", $internal_uri="mod1/index") ?>
 は、
{link_to name="home" internal_uri="mod1/index"}
 と記述すればそのまま使えます。「layout.tpl」をもとの「layout.php」と照らし合わせると、次のような感じになります。
Smartyプラグイン使用時のsymfonyヘルパーの使用
symfonyヘルパーSmartyプラグイン使用時の記述
<?php include_http_metas() ?>{include_http_metas}
<?php include_metas() ?>{include_metas}
<?php include_title() ?>{include_title}
<?php echo $sf_data->getRaw('sf_content') ?>{$sf_data->getRaw('sf_content')}

今回のまとめ

 今回はsymfonyの国際化機能とプラグインの使用について紹介しました。次回最終回は、昨今、話題に上ることも多いAjaxプログラミングをsymfonyフレームワーク上で実現する方法について解説します。お楽しみに。

参考文献

 国際化機能に関連して、国と言語のコードは以下で調べられます。

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

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

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、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/1284 2007/05/23 08:00

イベント

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

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

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

メールバックナンバー