【ZF2】モジュールの追加

[`evernote` not found]
LinkedIn にシェア

Zend Framework 2やっとSEらしいエントリーです^^
PHPのプロジェクトで、Zendフレームワークを使用しようとしたところ、Version2になっていてディレクトリ構造もモジュールの管理方法も変わったようです。

まだ日本語の書籍等は出ていない様ですが、MVCモデルに慣れた方であれば、結構すんなり入っていけるのではないかと思われます。

自分が導入する中で、モジュールの追加で少し戸惑いました。導入に関しては、下記ブログを参考にしています。

モジュールの追加について

ZF2スケルトンでは、module以下にはApplicationという名前のモジュールが作成されていますが、当然複数のモジュールが想定された設計だと思います。CommonとかUser等、業務ごとにモジュールを分ける筈です。
(その点、Applicationという名前は不親切な気がします。)
そこで、Commonというモジュールを作成してみました。

module以下にCommonディレクトリ作成

作成と書きましたが、目的としてはApplicationサンプルの削除、また依存関係の確認の為ですので、ApplicationディレクトリをCommonにリネームします。
コントローラのディレクトリを、module/Common/src/Commonに、
ビューのディレクトリを、module/Common/view/commonに修正します。

module/Common/config/module.config.phpを修正

モジュール内の設定は当然、名前規則による変更が必要です。
詳細は省きますが、’router’以下ルーティングの定義、’controllers’以下コントローラーの定義、’view_manager’以下ビューの定義を修正します。
(後でここ補足します・・・)

config/application.config.phpに追加モジュールを追記

そもそもApplicationモジュールの指定ってどこだ?
ということで、config/application.config.phpの’modules’の指定を’Common’に変更。
追加の場合は単純に追加で良いと思われます。

ここで、動作確認してみましたが、エラー。

module/Common/Module.phpの修正!

勝手にモジュール共通の実装は独立したものと思っていましたが、module/Common/Module.phpを確認したところ、以下の箇所を発見。
namespace Application;

namespaceは(多分)定数のみしか指定できないと思うので、

[code lang=”php” title=”module/Common/Module.php” firstline=”10″]
//namespace Application;
namespace Common;
[/code]

とするしかないですね・・・。

もしかしたらそういう設計ではないかも知れませんが・・・
namespaceの定義は動的には解決してくれない様です。
(すみません、調査不足です)
モジュール増やす際はご注意を。

あ、下のブログにめっちゃ書いてありました^^;
最初読んだときは気づかないものですね。

<参考資料>