1

シンボリックリンクを含むディレクトリツリーがあります。これらはrequire_onceで呼び出されますが、「m」で参照されることもあれば、「mydir」で参照されることもあります。'm'と'mydir'はシンボリックリンクされていますが、require_onceが2回呼び出されると、それらは異なるファイルおよびコードエラーとして扱われます。

require_once("m/myfile.php");
require_once("mydir/myfile.php);

ファイルを1回だけ含めたいのですが、2回実行しようとします。

4

3 に答える 3

0

Windows にはシンボリック リンクがありません。

github などからコードをチェックアウトまたはダウンロードし、それを NTFS ファイル システムにドロップした場合、ダウンロード プログラムは、リンク用に 1 回、リンクされたファイル用に 1 回、ファイルを 2 回作成している可能性があります。これはよく見かけました

于 2013-03-05T21:56:41.563 に答える
0

完全に OO http://php.net/manual/en/language.oop5.autoload.phpの場合は、独自の require 関数 / autoloading 、または修正パス関数を使用します。

すなわち

//custom require
function myRequireOnce($filePath)
{//ensure only one version of sym path is ever used
  $filepath = str_replace('mydir', 'm' , $filepath); //possibly too simple
  require_once($filepath);
}

//fix path function
_fp($path)
{
  return str_replace('mydir', 'm' , $filepath);
}

require_once(_fp("m/myfile.php"));

いずれの場合も、目的は、実際に必要なパスが 1 つだけであることを保証することであり、変換は代替バージョンで行われます。

于 2013-03-05T22:12:34.227 に答える