Ich habe diesen Code gefunden, der alle Klassen innerhalb eines einzelnen Verzeichnisses automatisch startet, und es funktioniert ziemlich gut. Ich möchte es etwas erweitern können, um Klassen aus verschiedenen Pfaden (Verzeichnissen) zu laden. Hier ist der Code:PHP Autoload-Klassen aus verschiedenen Verzeichnissen
define('PATH', realpath(dirname(__file__)) . '/classes') . '/';
define('DS', DIRECTORY_SEPARATOR);
class Autoloader
{
private static $__loader;
private function __construct()
{
spl_autoload_register(array($this, 'autoLoad'));
}
public static function init()
{
if (self::$__loader == null) {
self::$__loader = new self();
}
return self::$__loader;
}
public function autoLoad($class)
{
$exts = array('.class.php');
spl_autoload_extensions("'" . implode(',', $exts) . "'");
set_include_path(get_include_path() . PATH_SEPARATOR . PATH);
foreach ($exts as $ext) {
if (is_readable($path = BASE . strtolower($class . $ext))) {
require_once $path;
return true;
}
}
self::recursiveAutoLoad($class, PATH);
}
private static function recursiveAutoLoad($class, $path)
{
if (is_dir($path)) {
if (($handle = opendir($path)) !== false) {
while (($resource = readdir($handle)) !== false) {
if (($resource == '..') or ($resource == '.')) {
continue;
}
if (is_dir($dir = $path . DS . $resource)) {
continue;
} else
if (is_readable($file = $path . DS . $resource)) {
require_once $file;
}
}
closedir($handle);
}
}
}
}
dann in Runt in meiner Datei index.php wie:
Autoloader::init();
Ich bin mit PHP 5.6
Haben Sie eine Frage? Diese Seite ist für Fragen gedacht, nicht ein Ort, um Ihre To-Do-Liste abzulegen und von jemand anderem zu erwarten, dass er Ihre Arbeit für Sie erledigt. –
@Marc B, Ja, meine Frage ist, wie man die Klasse erweitert, um mehrere Verzeichnisse zu scannen. Ich erwarte nicht, dass jemand meine Arbeit macht. Ich habe ein Stück Code zur Verfügung gestellt, und ich brauche Hilfe damit. Wenn du nicht helfen willst, dann verschwende diesen Raum nicht und lass jemand anderen etwas schlaues sagen. – Alko
Wir reparieren Code, wir schreiben ihn nicht für Sie oder helfen Ihnen bei der Entwicklung Ihres Systems. Das ist dein Job. Sie versuchen, etwas zu tun, wir (vielleicht) versuchen, Hilfe zu beheben. –