以前の開発者との下位互換性を提供するために、いくつかの異なるファイル命名規則を考慮した__autoload()関数を使用しています。
各規則に対して単純なループを実行し、そのファイルが存在するかどうかを確認します。ファイルが存在する場合は、それをロードします。
私の関数では、.inc、.class、.inc.phpなどのさまざまなファイル拡張子に対してこれを行います。同じことを行うこともできますが、最初の上位文字と下位文字を検索します。
これをsearchForClassFile()メソッドに入れ、else部分に「ファイルが見つかりました」というコメントを付けます。
編集(詳細):
正しいファイルを探すためにクラスディレクトリに再帰的に降りるのではなく、クラス名を特定の場所にマップします。これは一般的な方法です。たとえば、foo_bar
にマップされ[CLASS_DIRECTORY]/foo/bar.[EXTENSION]
ます。この場合、いくつかの異なる拡張機能をチェックします。
あなたの場合、クラスファイルをどのように検索するかについて設計上の決定を下す必要がありますが、コードを変更します。
} else {
// Found a file
if ($f == $className . self::$classFileSuffix ||
$f == strtolower($className) . self::classFileSuffix) {
return $subPath;
}
}
strtolower()の代わりに、最初の文字のみを下げる関数を作成できます。または、PHP> 5.3.0(正式にリリースされていない)を使用している場合は、lcfirst()関数を使用します。