Zend Framework入門(4):PHPでMVCアプリケーションを構築しよう - Zend_Controller(中編) -
Zend Frameworkによる実践的なPHPアプリケーション開発 4
ダウンロード サンプルファイル (5.4 KB)
サンプル
ここでルーティングを使った簡単なサンプルを示します。
<?php require_once 'Zend/Controller/Front.php'; // この行がないとエラーになります // (Zend/Controller/Router/Route/Static.phpはなくてもOKのようです) require_once 'Zend/Controller/Router/Route/Regex.php'; ... $front=Zend_Controller_Front::getInstance(); $router=$front->getRouter(); $router->addRoute('codezine1', new Zend_Controller_Router_Route( //(1) 'codezine/:id', array( 'controller' => 'wings', 'action' => 'codezine', 'id' => 7 ), array('id' => '\d+') )); $router->addRoute('codezine2', new Zend_Controller_Router_Route_Static( //(2) 'w-codezine', array( 'controller' => 'wings', 'action' => 'codezine', 'id' => 7 ) )); $router->addRoute('codezine3', new Zend_Controller_Router_Route_Regex( //(3) 'w-codezine(\d+)\.html', array( 'controller' => 'wings', 'action' => 'codezine' ), array(1 => 'id') )); $front->setControllerDirectory('../zendapps/controllers'); $front->dispatch();
(1)~(3)でそれぞれ「Zend_Controller_Router_Route」「Zend_Controller_Router_Route_Static」「Zend_Controller_Router_Route_Regex」を使ったルートを追加しています。
(1) 「http://localhost/codezine/<id>」にアクセスすると、wingsコントローラのcodezineアクションにidと共にディスパッチされます。idが省略されればid=7が送られます。idにあたる部分に整数が入らなければ、このルーティング方式には該当しないと判断され、(codezineコントローラを探すも見つからず)エラーになります。
(2) 「http://localhost/w-codezine」にアクセスすると、wingsコントローラのcodezineアクションにディスパッチされます。id=7が送られます。
(3) 「http://localhost/w-codezineX.html(Xは整数)」にアクセスすると、wingsコントローラのcodezineアクションにディスパッチされます。idにはXが送られます。




設定ファイルによるルート定義
Zend_Config(後の回で解説予定)を使用した、設定ファイルによるルート定義の方法があります。
require_once 'Zend/Config/Ini.php' … $settei = new Zend_Config_Ini('../config/appsettei.ini', 'routesettei'); //(1) $router = new Zend_Controller_Router_Rewrite(); $router->addConfig($settei, 'routes'); //(2)
(1)の第1引数でiniファイルのパスを指定し、第2引数でiniファイル内のルート設定用のセクション名を指定します。(2)のaddConfig()で、iniファイルを取り込みます。
iniファイル内の該当セクションは、次のように設定します。上記サンプルのルート定義を設定ファイルで表すと、以下にようになります。
… [routesettei] (セクション名) routes.codezine1.route = "codezine/:id" routes.codezine1.defaults.controller = "wings" routes.codezine1.defaults.action = "codezine" routes.codezine1.defaults.id = 7 routes.codezine1.reqs.id = "\d+" routes.codezine2.type = "Zend_Controller_Router_Route_Static" routes.codezine2.route = "w-codezine" routes.codezine2.defaults.controller = "wings" routes.codezine2.defaults.action = "codezine" routes.codezine2.defaults.id = 7 routes.codezine3.type = "Zend_Controller_Router_Route_Regex" routes.codezine3.route = "w-codezine(\d+)\.html" routes.codezine3.defaults.controller = "wings" routes.codezine3.defaults.action = "codezine" routes.codezine3.map.id = 1 …
項目は「.」で階層に分けられますが、階層ごとに以下のものを表しています。上記と照らし合わせながら見てみてください。
- 第1階層
- 第2階層
- 第3階層 以下
addConfig()第2引数で指定するもので、これを利用してルートの設定を行うことになる。| 項目 | 内容 |
| route | ルーティング方式”archive/:year/*” |
| defaults.<パラメータ> | デフォルト値 |
| reqs.<パラメータ> | 制限。「"\d+"」 |
| type | 使用クラス「Z_C_R_R_Static」とか(デフォルトはZCRR) |
| map | Regexの第3引数。「~.map.1="year"」 |
まとめ
以上、今回は、モジュールの使用とルーティングの方法について解説しました。次回は、引き続きアクションヘルパーとプラグインについて紹介する予定です。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
