php1221, совместите варианты предложенные message и $дмитрий.
То есть ваш код будет выглядеть примерно так:
| Код |
function __autoload($className) { require_once 'class/' $filename . '.php'; }
if ($handle = opendir('class')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $sClass = substr($file, 0, -4); $$sClass = new $sClass; } } }
|
P.S. Обязательно в функции __autoload сделайте проверку на существование подключаемого файла и существование подключаемого класса, как то так:
| Код | function __autoload($className) { $pathClass = 'class/' $filename . '.php'; if (file_exists($pathClass)) { require_once $pathClass; if (!class_exists($className)) { throw new Exception('Class not found!'); } } else { throw new Exception('File not found!'); } }
|
P.P.S. message ваш вариант использующий функцию set_include_path имеет неоднозначность в случае нахождения в директориях, для автоматического подключения классов, файлов с одинаковыми именами.
P.P.P.S. php1221, а как вы собираетесь использовать созданные в цикле экземпляры классов? Возможно есть более разумное решение, нежели то, что вы хотите использовать. |