[ PHP ] ZendFramework1 – 複数のモジュールディレクトリを設定する

Pocket

ここでは、Zend Framework1 において、複数のモジュールディレクトリを設定するサンプルを掲載しています。

みずがめ座の今日のラッキーアイテムは、猫のぬいぐるみでした。わたしは、みずがめ座ではありませんけどね。

スポンサーリンク

Zend Framework URL 基本構造

Zend Framework における URL の構造は、基本的に以下のようになっています。

http://server-domain/(module)/(controller)/(action)

 

複数のモジュールディレクトリ

モジュール自体は複数作成することも多いと思いますが、基本的にモジュールを配置するディレクトリは1つで十分かと思います。しかし、モジュール自体を複数のディレクトリに分割して管理することもできます。

次のように、application.ini を設定することでモジュールに対応するディレクトリを複数設定することができます。

application.ini

resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/default/controllers"

// モジュールを1つのディレクトリで管理する場合
//resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

// モジュールを複数のディレクトリで分割して管理する場合は配列指定が可能
resources.frontController.moduleDirectory[] = APPLICATION_PATH "/module1"
resources.frontController.moduleDirectory[] = APPLICATION_PATH "/module2"

resources.modules[] =

なお、モジュールディレクトリの設定により、内部で controllerDirectory も自動で追加されるので、別途設定する必要はありません。

有効なモジュール名

Zend Framework では、モジュール名として使用できる文字は、大文字・小文字を区別しない a~z および ‘CSV’ 以外の文字列であり、数字も無効なモジュール名として扱われています。なお、小文字の ‘cvs’ はOK牧場(未検証)だと思われます。

以下は、Zend Framework で行っているモジュール名の検証部分のソースコードになります。

CVS が気になります。

// Zend_Controller_Front.php

// Don't use SCCS directories as modules
if (preg_match('/^[^a-z]/i', $module) || ('CVS' == $module)) {
    continue;
}

 

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>