5

私は最初の MVC フレームワークに取り組んでおり、BASE_PATH、APP_PATH、LIB_PATH、および PUBLIC_PATH の 4 つの定数を定義したいと考えています。私のファイル構造は次のようになります。

/
/app
    /controllers
    /models
    /views
/config
/db
/lib
/public_html
    /css
    /js
    /img

私のindex.phpファイルはpublic_htmlディレクトリにあります。現在、次のコードがあります。

error_reporting(E_ALL);
define('BASE_PATH',dirname(realpath(__FILE__)) . "/../");
define('APP_PATH',dirname(realpath(__FILE__)) . "/../app/");
define('LIB_PATH',dirname(realpath(__FILE__)) . "/../lib/");
define('PUBLIC_PATH',dirname(realpath(__FILE__)) . "/");

require LIB_PATH . 'core.php';

これは機能しますが、「..」をすべて使わずにそれを行うより良い方法があるに違いないと感じています。何か提案がありますか、それともこれが最善の方法ですか?お知らせ下さい。ありがとうございました!


答え

@fireeyedboy と @KingCrunch に感謝します。探していたソリューションを思いつきました。これは私の最終的なコードです:

define('PUBLIC_PATH', dirname(__FILE__) . "/");
define('BASE_PATH', dirname(PUBLIC_PATH) . "/");
define('APP_PATH', BASE_PATH . "app/");
define('LIB_PATH', BASE_PATH . "lib/");
4

3 に答える 3

9

これはどう:

define('PUBLIC_PATH',dirname(realpath(__FILE__)) . "/");
define('BASE_PATH',dirname(PUBLIC_PATH));
define('APP_PATH',BASE_PATH . "/app/");
define('LIB_PATH',BASE_PATH . "/lib/");

つまり、dirname()もう一度使用します。また、定数の定義を並べ替えて、定数を直接使用できるようにします。ただし、読みやすさに役立つかどうかはわかりません。

于 2011-04-07T14:34:46.597 に答える
5

初め:

realpath(__FILE__)

役に立たない

../ただし、 「汚い」ものではないため、「本当の」より良い方法はありません。私の頭に浮かぶ唯一の他の解決策

dirname(dirname(__FILE__))

..ファイルシステム(phpによって発明されたものではありません;))が親ディレクトリを定義する方法.であり、現在のディレクトリも定義します。

于 2011-04-07T14:34:30.277 に答える
0

これは index.php にあるべきではありません..config/ フォルダーにある必要があり、PUBLIC_PATH は BASE_PATH と同じです...そして、dirname と realpath 関数を使用するのは好きではありません。パスを手動で(ただし、それは私だけです)

define('BASE_PATH',dirname(realpath(__FILE__)) . "/../");
define('APP_PATH',BASE_PATH . "app/");
define('LIB_PATH',BASE_PATH . "lib/");
于 2011-04-07T14:41:25.277 に答える