SOHOゆいちのサイト
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の以下のファイルを参照ください。(ダウンロードはこちら)
また、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’);
}}
これらのメソッドは、それぞれ、
上のフォルダ構成の「/アプリケーショントップ」のローカルパスを返します。
Bsheでは、apacheのAliasまたはドキュメントルートを「/www」にセットしますが、この「/www」を指す、URL上でのパスを返します。
上のフォルダ構成の「/アプリケーショントップ/library」のローカルパスを返します。
これらの関数も用意しておくと、プログラム内で重宝します。
www.bshe.org (created by itassist.info)
Zend Frameworkでのindex.phpでのmoduleのパスのセット…
Zend Frameworkでのindex.phpでのパスのセットなどでlibraryパスのセットを記載しましたが。
ZendFrameworkでは、コントローラーを呼び出す前に、モジュールのパスもセットする必要があります。
B…