Для общего развития и пополнения знаний решил написать свое совсем небольшое MVC, возможно в дальнейшем буду им пользоваться для каких-нибудь мелочей. хочу обойтись без namespace и хочу что бы классы подключались автоматически, т.е. через __autoload() с папками в которых хранятся классы MVC и контроллеры, там проблем нет, там файлы с именами идентичными классам. А вот с моделями я хочу сделать так, в папке models могут быть как файлы с моделями (файлы с именами идентичными классам) так и папки в которых будут располагаться несколько моделей под один контроллер (опять же файлы с именами идентичными классам). Например: Допустим есть контроллер UserController, и для него будут модели RegistrationModel, LoginModel и еще пару, а так же базовая для них модель UserBaseModel, от которой будут расширяться регистрация, авторизация и т.д. Вот уже голову изломал, как все это описать в __autoload() что бы подключались и просто модели в папке models и файлы находящиеся подпапках. Как варианты решения: 1. называть папку так же как и базовую модель (UserBaseModel) а вот подключение модели осуществлять через метод, что то типа: Код (PHP): $model = getModel('UserBaseModel/LoginModel'); а если базовых моделей будет несколько? шах и мат. 2. при старте MVC считывать все имена папок в папке models и потом по всем папкам искать, все вроде хорошо, но внутри мне что то говорит что это костыли. Что подскажите?
т.е. подключать вот так: Код (PHP): $model = getModel('UserBaseModel/LoginModel'); из этого кода я выцепляю имя папки UserBaseModel, потом в методе getModel: Код (PHP): $temp = get_include_path(); // вытаскиваю set_include_path($MAIN_DIR.'/UserBaseModel'); // задаю новое место // далее подключаю класс LoginModel // ... // после того как оно подключено возвращаю все назад set_include_path($temp); // ну или при помощи restore_include_path() такой алгоритм? и если такой, а это не опасно?
ну раз тебе известно имя папки то что мешает в __autoload подключить класс ? путь же получается известен. ?