Я использую __autoload в своем сценарии для включения классов по мере необходимости. Мой сценарий использует подсказки в имени класса, чтобы найти файл, содержащий его. Если он заканчивается на model, он находится в каталоге модели, контроллеры находятся в каталоге контроллера и т. д. Я начинаю реализовывать интерфейсы, поэтому мне нужно настроить автозагрузчик.
В идеале, когда объект создается, автозагрузчик определяет имя файла объекта, где он хранится, и включает файл. Затем он запросит у этого класса, какие интерфейсы он реализует, а затем автоматически включит эти файлы.
Что-то вроде
function __autoload($classname){
echo $classname;
include ("classes/$classname.php");
$interfaces = class_implements($classname,FALSE);
foreach($interfaces as $name){
if(!class_exists($name,FALSE)){
include("interfaces/".$name."inter.php");
}
}
}
За исключением случаев, когда я это делаю, я получаю сообщение об ошибке
Невозможно повторно объявить __autoload() (ранее объявленный в W:\xampp\htdocs\test\auto.php:5) в W:\xampp\htdocs\test\auto.php в строке 11.
нельзя ли сделать это в __autoload()? Должен ли я просто продолжать полагаться на соглашения об именах, чтобы различать типы объектов и места их хранения?