Какой фреймворк выбрать для начала и...

Как глубоко нужно вникать в язык, чтобы не спотыкаться при разработке на фреймворке… и стоит ли например изучать данный фремворк на php http://www.webasyst.com/ru/framework/ или выбрать типа codeigniter, flask, sinatra… а потом уже переходить на «гигантов» типа, lavarel, django, rails…

11 комментариев

avatar
  • MpaK
  • 0
Ну Laravel я бы не назвал гигантом, отличный фрэймворк с него можно было бы начать, НО есть одно огромное НО. Сейчас стабильная версия и весь мануал идет по версии 3, а уже в бете версия 4, пока релизнут, пока документацию доточат, пройдет еще полгода. Но фрэймворк действительно хорош, удобен и пользуется на западе большой популярностью.
Для начинающих я бы советовал CodeIgniter ellislab.com/codeigniter и русские маны и сообщество www.code-igniter.ru/ он дико простой, понятливый, хорошая документация, огромное кол-во библиотек под все задачи и при этом ведет себя стабильно и очень ожидаемо. До сих пор быстрые разработки веду на нем.
В дальнейшем уже можно перейти на Laravel как раз релизнется и если будет желание оставаться в PHP то идут следом Zend и Symfony2, одного из них будет вполне достаточно, хотя их «красоту» я так и не оценил, особенно после перехода на Ruby on Rails все это кажется перепутанными наборами классов.
avatar
Мне webapp2 больше нравится. Самый простой. И документация понятная.
avatar
  • MpaK
  • 0
Впервые вообще слышу о таком, типа Гугловцы сделали для себя как понимаю фрэймворк, а можно его за пределеами GAE использовать?
avatar
Конечно, есть отдельный документ, описывающий как. Ну как документ, просто туториал маленький.
avatar
Если с нуля, то laravel 3. Очень хорошая документация, полно хороших подробных туториалов, достаточно модулей, сделано все по уму. Да и перейти потом на четверку можно будет достаточно легко.

Codeigniter — простой и хороший старичок, но если двигаться дальше и переходить на что-то другое придется перестраиваться мозгом.

Чего точно не стоит даже пробовать — так это Symfony2 и Zend. Имхо. Если по работе прижмет — тогда да. А так…

Новичку, независимо от фреймворка, нужно знать вот это — habrahabr.ru/post/175465/. Контроллеры должны быть как можно меньше, пишите весь функционал в моделях.
avatar
  • MpaK
  • 0
ну Symfony2 и Zend это как бы уже типа «энтерпрайз» стандарта в мире PHP, попробовать прийдется все равно жеж :))))
avatar
  • aktuba
  • 0
Не согласен по некоторым пунктам:

1. Zend изучать стоит. Хотя бы потому, что в нем наиболее качественные либы. Они часто используются совместно с другими фреймворками.

2. Про «толстые модели» не согласен в корне. В модели должна быть ТОЛЬКО бизнес-логика, т.е. обработка данных и/или объектов. По не понятной для меня причине, многие «гуру» рекомендуют пихать в модель чуть-ли не весь код, включая валидацию, обработку ошибок и многое другое. Сравни 2 варианта:

а) в контроллере: очистка/фильтрация данных, обработка ошибок, отсылка уведомлений, логирование и пр. в модели, на входе, только необходимые данные, на выходе результат бизнес-логики.

б)в контроллере: пересылка данных модели, вызов вьюшки. в модели: очистка/фильтрация данных, обработка ошибок, отсылка уведомлений, логирование и пр.

В каком случае бизнес-логика приложения будет наиболее прозрачна? Но это еще не все )))).

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

К сожалению, я не смог найти ссылку, в которой создатели django признавались в том, что реализация толстых моделей была ошибкой. Как найду — выложу тут.
avatar
  • yan
  • 0
Про сервисный слой поддержу — если приложение предполагается чуть больше обычного блога и особенно если сущностей немного — модели пухнут как на дрожжах, к тому же постоянно возникают головоломка куда девать методы использующие данные сразу несколько моделей, сервисы тут хорошо помогают, главное точно распределить, что будет жить в контроллере, что в модели и сервисе — это не так просто.
avatar
  • yan
  • 0
а про зенд нет :) — то чтобы его освоить первым надо намного больше времени чем фреймворки попроще, а вот вторым, по аналогии, он уже постигается куда проще
avatar
  • MpaK
  • 0
Кстати, Laravel релизнулся, все писают кипятком говорят — laravel.com
avatar
  • 7pxl
  • 0
Я бзикнутый на дизайне — приятный дизайн в доках) дай бог будем учиться на новой)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.