Автозагрузка PHP MVC

Я столкнулся с функцией __autoload в PHP и хотел бы использовать ее со своей структурой папок MVC. Сама по себе функция довольно проста, но как добиться динамического сканирования папок после какого-либо именования, см. пример:

-application
--controller
--models
---entities
----house
---factories
----houseFactory
--views
-library
-public

Как вы, возможно, знаете, он очень близок к основанию на zend framework или других фреймворках - поскольку я родом из них, однако я хотел бы разработать веб-сайт без фреймворка и только начал писать файл начальной загрузки.

Может быть, кто-нибудь может помочь мне с автозагрузкой в ​​этом, я думаю, расширенном использовании.

Мои имена классов будут такими, как Model_Entities_House или Model_Factory_HouseFactory.

ведьма может быть применена к структуре папок.


person Richard    schedule 22.01.2011    source источник
comment
рассматривали ли вы циклический просмотр всех папок, чтобы проверить, существует ли файл, вместо того, чтобы анализировать строку для поиска пути?   -  person dqhendricks    schedule 22.01.2011


Ответы (1)


В основном я использую функцию автозагрузки SPL, которая поможет вам сделать это довольно легко. Это должно быть что-то вроде этого:

spl_autoload_register("MyClass::Autoloader");

Затем вы можете сделать что-то вроде этого

class MyClass
{
  public static function Autoloader($className)
  {
    //parse $className and decide where to load from...
  }
}

Если вы используете соглашение об именах, вы должны быть доступны для загрузки требуемого файла, просто используя имя.

person David Conde    schedule 22.01.2011
comment
+1, выглядит хорошо и очень профессионально, но создание совершенно нового класса оставляет ощущение слишком многого. Во всяком случае, это, вероятно, путь. - person Sliq; 01.09.2013