SOHOゆいちのサイト
Zend Frameworkでのindex.phpでのパスのセットなどでlibraryパスのセットを記載しましたが。
ZendFrameworkでは、コントローラーを呼び出す前に、モジュールのパスもセットする必要があります。
Bsheでは実際には以下のように、/application以下に個々のアプリケーションのフォルダを決めているため、フォルダを参照して自動で、moduleのパスをセットしてくれるようにしてあります。
実際の実装はBsheの以下のファイルを参照してください。(ダウンロードはこちら)
/アプリケーショントップ
┠ /application : 個々のアプリケーションのコントローラーやモデル
┠ /モジュール名 : 各モジュールのフォルダ
┠ /controllers : モジュールのコントローラー
┠ /bshe : Bshe独自のコントローラーやモデル
┠ /library
┠ /Bshe : Bsheのライブラリ
┠ /Zend : ZendFramework
┠ /www : Apacheの設定上のアプリケーションのルート(Aliasの設定先やドキュメントルート)
┠ /_bshe : Bshe独自のテンプレートやアプリケーション、Javascriptなど
┠ /_bshetemplate : アプリケーション独自のテンプレート(実際のHTMLコンテンツのおき場所)
実際の実装は以下のようになっています。
$dirScan = scandir(Bshe_Controller_Init::getMainPath() . ‘/application’, 1);
foreach ($dirScan as $key => $dirName) {
if(($dirName != ‘models’) and ($dirName != ‘controllers’) and ($dirName != ‘views’) and ($dirName != ‘..’) and ($dirName != ‘.’)) {
// パスに追加
$controllerPaths[$dirName] = Bshe_Controller_Init::getMainPath() . ‘/application/’ . $dirName . ‘/controllers’;
}
}
$front->setControllerDirectory($controllerPaths);
ここで、Bshe_Controller_Init::getMainPath()はアプリケーションのトップパスを返す関数です。(詳細はこちら)
こうすることで、モジュールを追加するたびにindex.phpの中でコントローラーfrontにパスを追加せずに処理するようになっています。
www.bshe.org (created by itassist.info)