Постановка проблемы

Предположим, что проект большой и почти автономно развивающийся или просто плохая память:)

Вам вдруг захотелось избавиться от постоянного вопроса "случился ли require файла класса?"

Варианты решения

сперва глупые...

Потом обработать и, исправив "на лету" проблему недостачи класса, загрузить файл, продолжить выполнение программы.

простейший четвертый

Сразу извиняюсь, что использую singleton - жалко память :)

файл autoloader.php


class autoloader {
// [синглтон] где хранится экземпляр класса static private $class = false;

// [синглтон] точка входа в класс public static function gate()
{ if( is_object( self::$class ) == false ){
self::$class = new self; }
return self::$class;
}

// где будет карта папок private $classFolders;

// тут соберем карту при инициализации экземпляра класса function __construct()
{ $this->classFolders = array( 'controller' => array( 'namePostfix' => 'Controller', ),
'model' => array(),
);
}

/* "автопогрузчик" файлов */
public function autoLoader( $className )
{ // пробегаем по карте папок в поисках нужного файла foreach( $this->classFolders AS $folder=>$it )
{ $path = $folder . '/' ;
$fileName = $path . $className;
// прикручиваем особый постфикс к файлу, если хочется конечно if( isset( $it[ 'namePostfix' ] ) ){ $fileName .= $it[ 'namePostfix' ]; }
$fileName .= '.php';
// проверяем есть ли вообще файл if( file_exists( $fileName ) ){ // загружаем файл require_once( $fileName );
// срочненько прекращаем поиск по папкам и выходим return true;
}
}
return false;
}

/* end class */ }



/* и присваиваем нужное действие автозаргузчику */
function __autoload( $className )
{ autoloader::gate()->autoLoader( $className ); }

// понятное дело код можно разнести и оптимизировать под себя

Ну собсвенно и все. подргужаем файл autoloader.php в нужном месте и... Остается разложить одноименные классам файлы по папкам и забыть про то, что где-то что-то не подгрузилось.

Удачи в кодировании идей!