Как объединить / исключить включение PHP для файлов классов - PullRequest
2 голосов
/ 02 июня 2011

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

Обновление

Завершено с помощью автозагрузчика здесьphp.net ссылка .Теперь мне не нужно явно включать каждый файл, и по ссылке файлы загружаются лениво.

Ответы [ 3 ]

3 голосов
/ 02 июня 2011

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

Если вы думаете о создании отдельного класса для require (), я бы посоветовал сохранить ваши отдельные классы в качестве своих собственных файлов и сделать ваш Consolidate.php похожим на это:

<?php
    /** consolidate.php **/
    require( "class.session.php" );
    require( "class.general.php" );
?>

Что касается обработки PHP, то вызов метода require () или include () для файла фактически не вызывает никаких методов конструирования объектов. Тем не менее, он включает в себя весь файл. Например, включение session.php (2 КБ) и general.php (3 КБ) будет включать только 5 КБ. Включение всего может значительно увеличить этот размер в зависимости от базы кода.

3 голосов
/ 02 июня 2011

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

Я бы не беспокоился об этом, потому что потребление памяти только для классов близко к нулю.Файловый ввод / вывод, вероятно, также не будет проблемой.У вас может быть кэш APC, который хранит скомпилированные версии файлов PHP в памяти, а если нет, то ваша ОС, вероятно, будет иметь некоторые функции кэширования, которые ускоряют загрузку часто используемых файлов.

2 голосов
/ 02 июня 2011

Вы должны абсолютно не поместить все ваши классы в один файл, если вы разрабатываете ихЭто делает вещи очень сложными в обслуживании.Отдельный файл для каждого класса означает, что вы точно знаете, куда идти, чтобы что-то изменить.И да, PHP будет тратить время на анализ классов, которые вы не используете.Почему вы не хотите использовать автозагрузчик?Они делают вещи намного проще, и это не так, как будто они сильно нагружены или что-то в этом роде.

Если вы беспокоитесь об эффективности ввода-вывода, то кэшируйте свой код.

Обращение к соглашениям об именахЯ предлагаю вам взглянуть на довольно широко принятый стандарт здесь:

http://groups.google.com/group/php-standards/web/psr-0-final-proposal?pli=1

...