Zend Frameworkでのindex.phpでのパスのセットなど  2009年5月14日

Zend Frameworkでの.htaccessでも書きましたが、Bsheは以下のようなフォルダ構造で実装されています。

/アプリケーショントップ

 ┠ /application : 個々のアプリケーションのコントローラーやモデル

 ┠ /bshe : Bshe独自のコントローラーやモデル

 ┠ /library

     ┠ /Bshe : Bsheのライブラリ

     ┠ /Zend : ZendFramework

 ┠ /www : Apacheの設定上のアプリケーションのルート(Aliasの設定先やドキュメントルート)

     ┠ /_bshe : Bshe独自のテンプレートやアプリケーション、Javascriptなど

     ┠ /_bshetemplate : アプリケーション独自のテンプレート(実際のHTMLコンテンツのおき場所)

ここで、実際にindex.phpがあるのは/www/_bshe/の下なのですが、この構造で開発を進める際には、「/アプリケーショントップ」の実際のサーバー上でのパスや、アプリケーションのトップのURLが必要となるシーンが多々ありました。

そこで、Bsheでは、パス関連を取得する関数を以下のように用意して、index.phpの実装もそれを利用するようになっています。

実際の実装では、Bsheの以下のファイルを参照ください。(ダウンロードはこちら

  • ●/www/_bshe/index.php
  • ●/www/_bshe/setPath.inc
  • ●Bshe_Controller_Init

初期化の際のini_set

また、Zend Frameworkを利用する際は、大抵(おそらく)、「/アプリケーショントップ/library」にパスを通すと思いますので、以下のようなコードをindex.php(Bsheでは、setPath.inc)に記入しておくと便利です。

// ライブラリパス
    $thisDirname = dirname($_SERVER['SCRIPT_FILENAME']);
    $libraryPath = realpath($thisDirname . ‘/../../library’);
    $applicationPath = realpath($thisDirname . ‘/../../application’);
// アプリケーションエリアのトップパス(下でセッションに保存する)
    ini_set("include_path",ini_get("include_path") . ‘:’ . $libraryPath . ‘:’ . $applicationPath);

パス情報の取得クラス

各種パス情報を取得するスタティックメソッドを持った以下のクラスを用意しています。

class Bshe_Controller_Init
{

    /**
     * アプリケーションのメインパス
     * (libraryの一つ上のパスを返す)
     *
     * @return string
     */
    static public function getMainPath()
    {
        $thisDirname = dirname($_SERVER['SCRIPT_FILENAME']);
        return realpath($thisDirname . ‘/../..’);
    }

    /**
     * URLのルート(DocumentRootの場合はなし)を返す
     *
     * @return string
     */
    static public function getUrlPath()
    {
        $config = Bshe_Registry_Config::getConfig(‘Bshe_Specializer’);
        $strTmp = str_replace($config->indexphp_path, ”, substr($_SERVER['SCRIPT_NAME'], 0, strlen($_SERVER['SCRIPT_NAME']) – strlen(basename($_SERVER['SCRIPT_FILENAME'])) -1));

        return $strTmp;
    }

    /**
     * libraryのメインパスを返す
     *
     * @return string
     */
    static public function getLibraryPath()
    {
        return realpath(self::getMainPath() . ‘/library’);
    }

}

これらのメソッドは、それぞれ、

getMainPath

上のフォルダ構成の「/アプリケーショントップ」のローカルパスを返します。

getUrlPath

Bsheでは、apacheのAliasまたはドキュメントルートを「/www」にセットしますが、この「/www」を指す、URL上でのパスを返します。

getLibraryPath

上のフォルダ構成の「/アプリケーショントップ/library」のローカルパスを返します。

これらの関数も用意しておくと、プログラム内で重宝します。

このエントリをはてなブックマークに登録 このエントリをBuzzurlにブックマーク Yahoo!ブックマークに登録 このエントリをlivedoorクリップに登録 Deliciousにブックマーク

コメントなし

  1. Zend Frameworkでのindex.phpでのmoduleのパスのセット…

    Zend Frameworkでのindex.phpでのパスのセットなどでlibraryパスのセットを記載しましたが。

    ZendFrameworkでは、コントローラーを呼び出す前に、モジュールのパスもセットする必要があります。

    B…

コメントを投稿