Помните: MVC, OOP и уровни являются концепциями проектирования, а не языковыми конструкциями или структурированием файлов.
Для меня это означает, что когда не используется фреймворк и когда нет разных команд для программирования и проектирования; нет смысла использовать другую систему шаблонов поверх PHP (который является языком шаблонов). Кроме того, отделение кода от макета не обязательно означает выполнение его для разных файлов.
Вот как я это делал для одноразовых, редко расширяемых веб-приложений PHP:
- написать файл 'общие утилиты', там я поместил некоторые функции форматирования / очистки, а также несколько функций доступа к БД:
- getquery (): с учетом SQL возвращает объект результата
- getrecord (): с учетом SQL возвращает объект записи (и закрывает запрос)
- getdatum (): с учетом SQL возвращает одно поле (и закрывает запрос)
- поместить все конфигурации (доступ к БД, некоторые префиксы URL и т. Д.) В файл 'config.php'
- написать слой модели, либо один файл, либо один для каждого объекта, который вы храните в БД. Там будут все константы SQL, представляющие API более высокого уровня, основанные на ваших концептуальных объектах, а не на записях БД.
это ваш «фреймворк», тогда вы пишете слой «презентация»:
один PHP-файл для каждой страницы, начинается с некоторого простого кода для извлечения необходимых объектов, за которым следует HTML с вкрапленным PHP-кодом, просто для «заполнения пробелов». за очень немногими исключениями, самый сложный код должен быть для циклов. Я устанавливаю правило использовать только одну строку: ?>
должно быть в той же строке, что и отверстие <?php
- каждая форма ввода данных должна указывать на небольшой PHP без HTML, который просто получает данные POST, входит в БД и пересылает на вызывающую страницу.
и все. Если вы работаете в одиночку, у вас есть все необходимые вам разделение намерений, без утопления в большом количестве файлов за одно действие пользователя. Каждая страница, видимая пользователем, управляется одним файлом PHP.
Его даже легко поддерживать после нескольких месяцев, не просматривая код, поскольку его легко протестировать, принимая к сведению имена файлов в поле URL браузера. Это приведет вас непосредственно к соответствующему коду.
(в настоящее время, конечно, я использую Django почти для всего ...)