やっと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の定義は動的には解決してくれない様です。
(すみません、調査不足です)
モジュール増やす際はご注意を。
あ、下のブログにめっちゃ書いてありました^^;
最初読んだときは気づかないものですね。