わかりました、私は確信しています。
get_ini('include_path')
私の問題の解決策は、含まれている ごとに繰り返し$fileName
、絶対パスに変換してそれに応じて処理することです。私のカスタムインクルードクラスへの変更は最小限です。クラスローダーは変更する必要はありません。
迅速な回答ありがとうございます。
以下は、私のインクルーダー クラスからの関連する更新されたメソッドです: ( $this->includePath は get_ini('include_path') に初期化されます)
// Pre-condition for includeFile()
// checks if $fileName exists in the include path
public function mayIncludeFile($fileName)
{
if(array_key_exists($fileName, $this->includeMap))
{
return TRUE;
}
if($fileName{0} == DIRECTORY_SEPARATOR)
{
if(is_file($fileName))
{
$this->includeMap[$fileName] = $fileName;
return TRUE;
}
}
else foreach($this->includePath as $index => $path)
{
$absoluteFileName = $path . DIRECTORY_SEPARATOR . $fileName;
if(is_file($absoluteFileName))
{
$this->includeMap[$fileName] = $absoluteFileName;
return TRUE;
}
}
return FALSE;
}
public function includeFile($fileName)
{
$this->validateFileName($fileName, TRUE);
if((array_key_exists($fileName, $this->includeMap) && $this->includeMap[$fileName]) ||
$this->mayIncludeFile($fileName))
{
include_once($this->includeMap[$fileName]);
}
}