F3 (обезжиренный PHP-фреймворк) и добавление к нему структуры MVC/OOP
Этот вопрос касается F3 (Php Fat Free framework), на который я наткнулся в поисках простой, быстрой и безопасной платформы, подходящей для небольших веб-сайтов и/или блогов. Что было важно для меня, так это то, что у фреймворка был какой-то ACL и простота. Если вы знаете какие-нибудь хорошие альтернативы, я весь внимание. Тем временем, вопрос о F3 для тех, у кого был опыт работы с ним:
Возможно ли иметь приличную структуру MVC ООП с F3? Так как маршруты, такие как
F3::route('GET /',':indexController|home');
не работает, как можно реализовать правильную структуру MVC? Я знаю, что могу установить домашний метод в статический, а затем выполнить F3::route('GET /','indexController::home');
, но это кажется ненужным усложнением и излишеством, и игнорирует метод построения, который мне нужно установить для каждого контроллера отдельно. Что я хотел бы иметь в своем index.php файл содержит только маршруты к различным контроллерам и действиям, остальная логика будет обрабатываться в этих контроллерах. Каков наилучший способ подойти это?
Большое спасибо
Редактировать: Я также хотел бы услышать некоторое мнение о Yii, я вижу, что он получил довольно высокий рейтинг на PHPFrameworks.com
6 answers
Попробуйте f3::route('GET /',array(new IndexController,'home'));
Это вызовет ваш конструктор и также выполнит метод home(). f3 не продвигает какой-либо "правильный" подход MVC. вместо этого у вас есть подход MVC "от руки".
F3 не раздувается с помощью какой-либо встроенной архитектуры MVC, это в основном просто фронт-контроллер. И в этом весь смысл. Вместо того чтобы заставлять вас использовать определенный набор инструментов, вы можете реализовать все, что захотите. Например, если вам не нравятся плагины Axon и Template от F3, вы можете использовать Red Bean ORM для управления своими моделями и Smarty для создания своих представлений. F3, по сути, просто направляет URL-адреса на ваши контроллеры и остается в стороне от вас.
Если вам нужен MVC, зачем использовать F3. Лучше используйте CodeIgniter или Kohana (если у вас есть PHP 5). Они тоже довольно легкие и созданы для структуры MVC.
Похоже, поездка в пекарню не повредит. CakePHP имеет отличное ядро ACL и может быть настолько легким, насколько вы хотите, чтобы оно было IMHO.
Вы также можете переместить определение маршрутов в какой-нибудь отдельный конфигурационный файл со следующей структурой примера (routes.ini):
[routes]
GET|POST / = IndexController->indexAction
GET|POST @Index: /@lang = IndexController->langAction
И включите его в конфигурацию F3:
\F3::config('routes.ini');
Затем добавьте каталог с контроллерами и моделями в АВТОЗАГРУЗЧИК. В качестве представления вы можете использовать - например phptal. Теперь у вас почти готов MVC над F3.
Я создал проект, который я называю Grump-Free-Framework, который делает именно это.
Вы можете ознакомиться с проектом на github.
Он использует простую маршрутизацию по карте для вызова контроллеров в полностью модульной структуре, каждый модуль имеет свой собственный MVC.
/@module = modules\@module\Controller
Где вы можете создавать новые модули внутри папки app/modules/
, которые содержат контроллер, необязательно столько моделей, сколько вы хотите, и столько представлений, сколько хотите.
Существует также еще один проект, который просто некоторые базовые модули, такие как модуль входа в систему, которые вы можете найти в файле readme проекта grump-free-framework.