18

私は自分の Web サイトでパスを処理するための最良の方法を見つけようとして、インターネットのいたるところにいました。相対パス、絶対パスを使用する必要がありますか?

dirname ( FILE ) が何度か言及されているのを見てきました。相対パスに関して私が抱えている問題の 1 つは、異なるディレクトリ レベルにある他のいくつかのファイルに含まれる PHP ファイルが相対パスを壊すことです。たとえば、ディレクトリ構造が

Root
    A
    B
       b

また、b の PHP ファイルと An に B の別のファイルが含まれている場合、B のファイル内のコードの相対パスは異なります。

したがって、一般的に、コード内のインクルードとファイル操作に関して、ファイルへのパスを処理する最良の方法は何ですか?

4

5 に答える 5

15

index.phpパスを見つける方法はたくさんありますが、プロジェクトのルートまたはconfigある種のファイル内で定数を定義するのが最も簡単だといつも思います。次にSITE_ROOT、インクルード/クラスローダーなど、およびSITE_URLビュー、コントローラー、リダイレクトなどに使用できます。

<?php
$root=pathinfo($_SERVER['SCRIPT_FILENAME']);
define ('BASE_FOLDER', basename($root['dirname']));
define ('SITE_ROOT',    realpath(dirname(__FILE__)));
define ('SITE_URL',    'http://'.$_SERVER['HTTP_HOST'].'/'.BASE_FOLDER);
?>

基本クラスのオートローダー

<?php
function __autoload($class_name) {
    include (SITE_ROOT.'/includes/'.$class_name.'.php');
}
$obj  = new MyClass1();
$obj2 = new MyClass2(); 
?>
于 2012-05-03T04:30:07.370 に答える
0

すべてのインクルード ファイルを 1 つのメイン ディレクトリに配置できます。次に、構成ファイルまたはスクリプト自体に、インクルード ディレクトリを指すパス変数を作成します。

于 2012-05-03T04:14:45.600 に答える
0

ディレクトリ構造、PHP ファイル、ファイルのクラス名に適切な命名規則を使用し、ファイルをインクルードするオートローダーを設計する最善の方法

于 2012-05-03T04:15:48.333 に答える
-1

新しいバージョンの php ( PHP5.3 ) では __autoload を使用でき ます。そのため、アプリケーションのルートを特定するだけで済みます。

于 2012-05-03T04:15:26.303 に答える