F3 (Fat-Free PHP framework) и добавление к нему структуры MVC/OOP

Этот вопрос касается F3 (фреймворк Php Fat Free), на который я наткнулся в поисках простого, быстрого и безопасного фреймворка, подходящего для небольших веб-сайтов и/или блогов. Для меня было важно, чтобы у фреймворка был какой-то ACL и простота. Если вы знаете какие-либо хорошие альтернативы, я все уши. А пока вопрос по F3 для тех, кто имел с ней опыт:

Возможно ли иметь приличную структуру ООП MVC с F3? Поскольку такие маршруты, как F3::route('GET /',':indexController|home');, не работают, как реализовать правильную структуру MVC? Я знаю, что могу установить статический метод home, а затем выполнить F3::route('GET /','indexController::home');, но это кажется ненужным усложнением и излишеством, и игнорирует метод построения, который мне нужен для установки макета для каждого контроллера отдельно. То, что я хотел бы иметь в своем файле index.php, — это только маршруты к различным контроллерам и действиям, остальная логика будет обрабатываться в этих контроллерах. Как лучше всего подойти к этому?

Большое спасибо

Изменить: я также хотел бы услышать мнение о Yii, я вижу, что он довольно высоко оценивается на PHPFrameworks.com.


person Swader    schedule 16.01.2011    source источник
comment
F3 более анорексичен, чем Fat Free, я бы посоветовал Slim CodeIgniter   -  person RobertPitt    schedule 17.01.2011
comment
Спасибо, я проверю. В основном я ищу хорошую, простую и легкую среду PHP 5.3 MVC, желательно с уже встроенной хорошей аутентификацией пользователя, для создания небольших веб-сайтов и блогов. Я использую Zend для корпоративного уровня.   -  person Swader    schedule 17.01.2011
comment
попробуйте google для lightvc.. он очень легкий.. но я боюсь, что у него нет модуля acl   -  person slier    schedule 17.01.2011
comment
phpframeworks.com — устаревший, облепленный рекламой и довольно сомнительный сайт.   -  person ax.    schedule 17.03.2011
comment
Тем не менее, для любителей MVC и ООП я бы предпочел Yii гораздо больше, чем F3. В итоге я переоформил yii-style для своего стиля кодирования. и безопасность.   -  person Shia Masaki    schedule 09.09.2015


Ответы (6)


попробуй f3::route('GET /',array(new IndexController,'home'));

это вызовет ваш конструктор и также выполнит метод home(). f3 не продвигает какой-либо «правильный» подход MVC. вместо этого у вас есть подход MVC "от руки".

person bcosca    schedule 20.01.2011
comment
Это сработало. Однако он вялый. В целях тестирования я поместил эхо в __construct и еще одно в функцию home. Конструктивное эхо отображается мгновенно, в то время как для появления второго эха требуется значительная доля секунды. Я думаю, что я просто сделаю свой собственный жестоко простой DB + ACL MVC, который можно использовать для простых проектов, все, на что я смотрел, кажется раздутым и непрактичным, даже самые простые... теперь просто найти подходящее лучшее практиковать учебные материалы. Спасибо! - person Swader; 20.01.2011
comment
Версии 2.x позволяют использовать этот формат: f3::route('GET /','IndexController->home'); - person bcosca; 26.11.2012

F3 не раздувается какой-либо встроенной архитектурой MVC, это просто фронт-контроллер. И в этом весь смысл. Вместо того, чтобы заставлять вас использовать определенный набор инструментов, вы можете реализовать все, что захотите. Например, если вам не нравятся плагины F3 Axon и Template, вы можете использовать Red Bean ORM для управления своими моделями и Smarty для создания своих представлений. F3, по своей сути, просто направляет URL-адреса на ваши контроллеры и не мешает вам.

person nicholas    schedule 12.08.2011

Если вы хотите MVC, зачем использовать F3. Лучше используйте CodeIgniter или Kohana (если у вас PHP 5). Они также довольно легкие и созданы для структуры MVC.

person GolezTrol    schedule 16.01.2011
comment
Я проверю их, ура. Я читал о них обоих, но самый последний сравнительный пост профессионального уровня, который я смог найти, был примерно в 2008 году. - person Swader; 17.01.2011

Похоже, поход в пекарню не повредит. CakePHP имеет отличное ядро ​​​​ACL и может быть настолько легким, насколько вы хотите, ИМХО.

person OldWest    schedule 17.01.2011
comment
Я читал о cakePHP, но утверждения о том, что он даже медленнее, чем Zend, довольно согласуются во всех аналитических сообщениях, которые мне удалось найти. После простоты и хорошего ACL приоритетом для меня является скорость - меня больше ничего не волнует. - person Swader; 17.01.2011

Вы также можете переместить определение маршрутов в отдельный файл конфигурации с помощью этой примерной структуры (routes.ini):

[routes]
GET|POST / = IndexController->indexAction
GET|POST @Index: /@lang = IndexController->langAction

и включить его в конфиг F3:

\F3::config('routes.ini');

Затем добавьте каталог с контроллерами и моделями в AUTOLOADER. В качестве представления вы можете использовать — например, PHPTal. Теперь у вас есть почти готовый MVC над F3.

person mirekratman    schedule 05.09.2015

Я создал проект, который я называю Grump-Free-Framework, который делает именно это.

Вы можете ознакомиться с проектом на github.

Он использует простую маршрутизацию карты для вызова контроллеров в полностью модульной структуре, каждый модуль имеет свой собственный MVC.

/@module = modules\@module\Controller

Где вы можете создавать новые модули внутри папки app/modules/, которые содержат контроллер, при желании столько моделей, сколько вы хотите, и столько представлений, сколько хотите.

Существует также еще один проект, который представляет собой всего лишь несколько базовых модулей, таких как модуль входа в систему, который вы можете найти в файле readme проекта grump-free-framework.

person GrumpyCrouton    schedule 28.06.2018