Для того, чтобы быть новичком, вы хорошо разбираетесь в более сложных терминах, таких как контроллер и как правильно инициализировать ваше приложение (т.е. начальная загрузка).
Мои проекты за последние несколько лет были построены на платформе Symfony, и она делает то же самое, что вы описываете; Контроллер определяет среду (dev или prod и т. д.), затем запускает фреймворк на основе файлов конфигурации.
Разница между вашим подходом и подходом Symfony заключается в том, что Symfony использует преимущества так называемой автозагрузки . Symfony будет анализировать определенные каталоги в поисках файлов классов, создавая массив любых найденных классов, а затем записывает массивы в плоский файл, чтобы последующие запросы не требовали дополнительных затрат при обходе каталогов. Так что теперь, когда я работаю над приложением и мне нужен доступ к файлу, я просто звоню, и PHP знает, где его найти, благодаря автозагрузке.
Вы также можете сделать еще один шаг и указать пространство имен для своих классов, чтобы не путать с PHP Namespacing . Я имею в виду, что имена ваших классов основаны на их расположении в файловой системе. Очевидно, что вы не захотите включать полный путь к файлу, но начните с корневого каталога, а затем работайте с ним. Пространство имен также облегчает поиск файла.
Пример интервала имен классов с автозагрузкой:
// /home/mpurcell/projects/core/lib/CoreLib/Api/Database.php
// I told php to use /home/mpurcell/projects/core/lib as my root by adding it to include path, and registered the CoreLib_Api_ with the autoloader
// So my class would look like this:
class CoreLib_Api_Database
{
...
}
// /home/mpurcell/projects/app/myAwesomeApp/makeMoneyMoney.php
// As long as the autoloader has been initialized, I can make calls without having to require files
CoreLib_Api_Database::getDbo($dboKey);
Если вам нужна возможность автозагрузки без использования ее в контексте среды, я бы предложил Zend Framework, а точнее Zend_Loader_Autoloader .
Извините, если это немного больше, чем вы ожидали, но вы задали хороший вопрос.