Правильно включать практику проектирования в Stack Overflow

Я только начал работать над большей ранее существовавшей кодовой базой (PHP), и до меня дошло, что многие из этих файлов включают / требуют нечитаемый способ. Включает / требует своего рода каскад через файловую систему, потому что почти каждый файл в системе включает / требует файл с именем common.php. Этот общий файл включает / требует практически любой другой файл, поэтому, когда у разработчика возникли сомнения, он просто включил / потребовал общего и назвал его хорошим.

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

С другой стороны: я пытаюсь сменить файл api на новый (сохраняя старый для тестирования совместимости), и мне сложно сказать, какие файлы используют мой новый api или старый.

1

Решение

В общем-то, включает в себя следует использовать для просмотра материалов на основе (HTML, всезнайка, возможно XML или XSLT) как в разметке используется для построения представления в MVC подход. Тем не мение, require(); или же require_once(); используются для управления включением функциональности ядра на стороне сервера в функциональные или объектно-ориентированные настройки (контроллеры и модели в MVC).

И то и другое require(); или же require_once(); обеспечить программный механизм безопасности, при котором в случае сбоя кода он прекращает работу, а ошибки отправляются в журналы. См. документацию для требовать а также require_once. В то время как include(); продолжит запускать ошибочный код, несмотря на ошибки — вы этого не хотите.

На ваш другой вопрос, касающийся одного файла, который «включает в себя все», некоторые PHP-фреймворки, такие как Zend и CodeIgniter Позволяет что-то, что называется автозагрузчик — это загружает все доступные классы и создает экземпляры основных классов ядра для программиста, чтобы использовать объекты по желанию.

Если вы не используете фреймворк, вы можете несколько смоделировать это, создав конфигурацию или в вашем случае общий файл. Тем не менее, вы можете не захотеть просто произвольно загружать все, так как это может создать путаницу, когда другие разработчики пытаются устранить неполадки позже — как вы могли бы узнать сейчас. Вам нужно будет оценить, протестировать и реструктурировать ваш код, чтобы выяснить, что действительно распространено и что редко используется в вашем коде. Я сделал это в прошлом, отслеживая — добавляя error_log() а также var_dump() в попытке проследить за данными по мере их перемещения по коду.

3

Другие решения

Пока вы знакомы с PHP, возможно, сейчас самое время познакомиться с PSR. Вы можете найти определения различных стандартов PSR на PHP-фиг Веб-сайт. Вы также найдете десятки отличных учебников по этой теме (я позволю Google обработать ссылки для этого).

Специфическими для вашего вопроса являются PSR-0 и PSR-4, каждый из которых имеет дело с автозагрузкой. Дебаты об автозагрузке и PSR продолжаются, и не у всех есть положительное мнение. Нравится это кому-то или нет, но это реальность, с которой можно столкнуться чаще, и способность понимать и использовать ее в значительной степени поможет вашему уровню комфорта по мере продвижения вперед.

Следование PSR делает ваш код более легким для чтения людьми за пределами вашей организации и может облегчить публичное распространение вашего проекта через composer / packagist.

0