загрузка только необходимых файлов или все рамки? - PullRequest
0 голосов
/ 15 августа 2011

Я просмотрел stackoverflow и до сих пор не могу найти ответ на свой вопрос.

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

Но для своих объектов базы данных я использую небольшой скрипт для включения всех файлов, потому что для каждой таблицы есть много слоев класса.(каждая таблица содержит как минимум 4 файла)

Вот фрагмент, который я сейчас использую для их загрузки.

// the constants are the directories to look for files
$__dirs = array(CORE_PATH,CX_SETTINGS,BASE_MODEL,MODEL,CUSTOM_MODEL,CONTROLLER,PLUG_IN,HELPER_FUNCTIONS);
$__accepted_ext = '.php';
foreach ($__dirs as $dir) {
    if ($handle = opendir($dir)) {
        // peer files first
        while (false !== ($file = readdir($handle))) {
            if ((strpos($file,$__accepted_ext) !== false)){
                require_once($dir.DS.$file);
                //echo "$dir : $file : works \n"; // debug
            }
        }
        closedir($handle);
    }
}

Этот метод будет сканировать каждый каталог, который я предоставляю, и включать все мои файлы php.

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

Теперь я читаю о функции __autoload () и считаю ее своей альтернативой.Но стоит ли беспокоиться об этом (включая даже файлы, которые я не буду использовать)?Какие методы используются в настоящее время для решения этой проблемы?

РЕДАКТИРОВАТЬ:

ПРИМЕЧАНИЕ: все включенные файлы являются классами, а не файлы, включенные по ошибке.пример: я мог бы загрузить класс комментариев, который действителен, но не используется на всех моих страницах.так что это в некотором роде не нужно

Ответы [ 2 ]

2 голосов
/ 15 августа 2011

Если вы пытаетесь избежать ненужных файлов с определением классов, spl_autoload_register() или __autoload() будет лучшим способом. Если вы регистрируете функцию автозагрузки, она будет вызываться автоматически, когда вы пытаетесь создать экземпляр неопределенного класса. Одна из проблем, с которой вы можете столкнуться - это как справиться со структурой каталогов с помощью подкаталогов с классами и т. Д. Их можно легко решить. Но если все ваши классы находятся в одном каталоге, у вас не возникнет никаких проблем.

0 голосов
/ 15 августа 2011

Почему бы вам не попытаться создать структуру каталогов или использовать разные окончания для классов?Как «.cls.php».Это уменьшило бы накладные расходы.Если вы хотите сделать это автоматически, вы включаете только эти файлы.Но, насколько я знаю, нельзя не загружать неиспользуемые классы ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...