サーバー側のinclude_pathには、 '/ usr/share/pear /'にあるpearディレクトリへの参照があります。私のアプリケーションの中には、共通ライブラリのファイルが含まれていて、 '/ usr/share/pear/library /'にあるファイルはrequire_once 'library/file.php'
です。SPLオートロードのベストプラクティス
私は最近、スプラウト・オートローダーの使用を開始しました。私はローダー機能に気づいたので、ファイルを含めるロジックを決定する必要があります。これを行う私の最初の方法は、ファイルを含めることを試みて、それが抑制されるかどうかを確認するために@
で抑制していました。 @include 'library/file.php'
しかし、ほとんど私が多くのことを読んだのは、@
が悪い練習をしているからです。手動で作業を自分で行うことを決めました。get_include_path
がPATH_SEPARATOR
で、ディレクトリが私には欲しいと思っていたら、file_exists
。
ので、同じように:
function classLoader($class) {
$paths = explode(PATH_SEPARATOR, get_include_path());
$file = SITE_PATH . 'classes' . DS . $class . '.Class.php';
if (file_exists($file) == false)
{
$exists = false;
foreach ($paths as $path)
{
$tmp = $path . DS . 'library' . DS . 'classes' . DS . $class . '.Class.php';
if (file_exists ($tmp))
{
$exists = true;
$file = $tmp;
}
}
if (!$exists) { return false; }
}
include $file;
}
spl_autoload_register('classLoader');
は私が間違ったルートを移動しましたか?ちょうど@include
ビジネスをやっているのですか、それともやっているのでしょうか?私は個人的にも、デバッグを容易にするために、@なし
function autoload($class) {
/* transform class name into filename ... */
include $class;
}
を使用して道を行く
splオートローディングはより現実的で現代的な方法ではありませんか?それとも基本的に同じものですか? –