3

私は次のようなグローバル定数を使用しています:

/project
    /application
        bootstrap.php
    /public
        index.php

index.php

  • PUBLIC_PATHとAPPLICATION_PATHを定義します
  • APPLICATION_PATHを呼び出します。bootstrap.php

bootstrap.php

  • LIBRARY_PATH、MODULES_PATH、TEMP_PATH、CONFIG_PATH、..を定義します。
  • 実際の仕事をします

また、これを行うためのより良い方法があるかどうかを尋ねたいですか?

4

3 に答える 3

1

アプリケーションが公開されていないということですか?とにかく、通常ROOT、私はフロントコントローラー(通常)で次のように定数を定義しますindex.php

define('ROOT', str_replace('\\', '/', __DIR__));

または、利用できない古いバージョンのPHPの__DIR__場合:

define('ROOT', str_replace('\\', '/', dirname(__FILE__)));

内部構造は決して変わらないので、私は次のようなことをします。

include(ROOT . '/application/libraries/Email.php');

それ以外の:

define('LIBRARY_PATH', ROOT . '/application/libraries');
include(LIBRARY_PATH . '/Email.php');

汚染軽減。=)

于 2010-05-20T11:45:01.143 に答える
1

ディレクトリツリーによると:

これは、PHPスクリプトをロードするために使用するものです。基本的には、index.phpまたはbootstrap.phpに配置できます。

define("PROJECT_DISK_PATH", str_replace('\\', '/', dirname(dirname(__FILE__))) . '/');
/*
Server variables $_SERVER['PHP_SELF'] and $_SERVER['SCRIPT_FILE_NAME'] are both USELESS to 
accomplish this task because they both return the currently executed script and not this included file path.
*/

次に、PHPスクリプトで次のことを行います。

include(PROJECT_DISK_PATH . 'path/to/your/script/somescript.php')

そして、これらは私がページにJS /CSSスクリプトをロードするために使用するものです:

define("PROJECT_DOCROOT_PATH", '/' . substr(PROJECT_DISK_PATH, strlen($_SERVER['DOCUMENT_ROOT'] . '/')));
define("PROJECT_HTTP_PATH", "http://" . $_SERVER['HTTP_HOST'] . JPL_DOCROOT_PATH);

したがって、ページで次のことができます。

   <script type="text/javascript" src="<?php echo PROJECT_DOCROOT_PATH; ?>path/to/your/script/somescript.js"></script>
于 2010-05-20T12:12:25.280 に答える
-1

可能な場合は絶対パス$_SERVER['DOCUMENT_ROOT']
を使用します。不可能な場合は、Alixと同じように相対パスを使用します。

于 2010-05-20T11:53:51.230 に答える