Хочу изучить MVC в PHP, с чего начать? Какой фреймворк выбрать для проекта?
=============================================================================

 Собственно, два вопроса:  
  
  
  

1) Хочу изучить MVC-подход в PHP, с чего начать, что почитать? (Желательно на русском для более быстрого восприятия)  
  

2) Сейчас начинаю новый проект, думаю, что необходимо взять какой-либо фреймворк для облегчения разработки — а какой именно?  
  
  
  

Гуру, подскажите, пожалуйста :) 

 Попробуйте [Yii](http://www.yiiframework.com/) — компактный, перспективный фреймворк, есть русская документация и форум. 

 Скорее всего вызову много возражений, но если вам позволяет время, для понимания MVC я бы посоветовал начать писать проект без фреймворка.  

Объясню почему.  

Когда я начинал разбираться с PHP, фреймворки почти не были развиты, тема не имела большой популярности. Да и уровень у меня был не тот, чтобы понять такую конструкцию. И, как и большинство начинающих программистов, я начал изобретать велосипеды. Сделал один сайт. При расширении оказалось, что некоторые места расширять категорически неудобно. Подумал, посмотрел исходники других проектов (тогда это был форум IPB 2), какие-то архитектурные решения позаимствовал, но без понимания их сути. Потом впервые услышал про фреймворки, увидел, что какие-то готовые части моего кода можно оформить и выделить в свою собственную платформу. Тогда я уже примерно понимал ООП, начал читать паттерны большой четвёрки. По ходу разработки часто наступал на грабли, переписывал целые подсистемы, какие-то моменты смотрел в существующих фреймворках, с каждой ошибкой приходило понимание того, почему в серьёзных платформах сделано «так, а не иначе». Со временем дошёл до того момента, когда мой «фреймворк» нужно было перепроектировать с нуля и тогда бы он стал очень удобным, очень расширяемым и вообще… И на этапе проектирования пришло понимание, что всё это уже написано до меня и мне писать ничего смысла уже нет. Только к этому моменту я прекрасно понимал, именно понимал, а не знал, многие приёмы, используемые в MVC-фреймворках. А так как общая суть у них похожа, то сроки изучения новых фреймворков значительно сократились за счёт понимания принципов их работы. Многие моменты понятны просто по исходникам и примерам использования, без документации.  

Да, это займёт много времени, но зато не будет проблем со сменой фреймворка. Да даже и языка. Своё первое приложение на Rails после знакомства с ним (до этого с ruby вообще дела не имел) я написал за три дня начиная с «как установить Ruby». Это был интерфейс inbox-почтового ящика с кучей аякса и всяческими плюшками вроде поиска, фильтров и прочего.  

Так что, если конечно же позволяет время и есть желание, рекомендую либо попробовать написать свой велосипед, либо до полного понимания разобрать какой-либо готовый фреймворк, тут уже не важно какой. 

 Zend Framework — громоздкий, большой, медленный — но как пример постоения ООП систем — отлично подойдет. Куча примеров, огромное комьюнити. 

[www.symfony-project.org/](http://www.symfony-project.org/) — ашшо один перспективный фреймворк… брейнфак немного вначале, но нормально… ) 

 Я бы посоветовал однозначно Zend как швейцарский нож, которым можно вырезать любую нужную деталь достойного качества, но! Но наскоком разобраться будет не совсем просто, поэтому стоит начать с кухонного ножа, простейших легковесных аналогов типа CodeIgniter (хорошая дока, понятная структура, лёгкий переход с него на Zend). А что касается MVC, так это тренд, и реализована она практически во всех современных фреймворках. 

[CodeIgniter](http://code-igniter.ru/) 

[cakephp](http://cakephp.org) для мелких проектов. Не самый шустрый конечно, но на мой взгляд неплохо реализована MVC, клон руби…   

Документация отличная, есть на [русском](http://cake-php.ru/).   

Очень много всего реализовано, в общем рекомендую.  

  

[cakephp на хабре](http://habrahabr.ru/blogs/cakephp/), [гугл группа](http://groups.google.com/group/cake-php-ru)  

  

Так же стоит посмотреть на [kohana](http://kohanaframework.org/)   

  

Yii и Zend уже рекомендовали… 

 Тут уже все посоветовали, но внесу свои 5 копеек. Сам пишу буквально первый проект с использованием framework пробовал symfony, yii и zend и вот сугубо мое мнение:  

Zend — пришлось пораскинуть мозгами что бы установить, настроить zend\_tools и подключить все это к netbeans. Перечитал кучу форумов, что бы реализовать правильную аутентификацию и авторизацию (примеров в интернете полно, но они либо неактуальной версии либо не полные), дальше пошло легче но все равно часто приходиться обращаться к форумам и документации.  

  

Yii — довольно просто установился, очень просто создал проект, имеет свой собственный генератор когда, но это мне в нем и не понравилось, вместо освоения с нуля приходилось разбираться в уже написанном не понятном мне коде, хотя есть неплохая документация на русском  

  

Symfony — тоже просто установился, проект создался не с первого раза но не сложно, с ходу подключил к netbeans хорошая документация, в том числе и на русском, понравилась встроенная orm доктрина, но потом возникли сложности с примерами из документации (возможно из за моих кривых рук) и я бросил изучение.  

  

В итоге пишу на zend (возможно потому что попробовал его первым) продвинулся достаточно далеко, из за того, что почти весь код пишу сам хорошо его понимаю. 

 Я бы посоветовал вам сначала разобраться что такое вообще ООП и с чем его едят, а потом уже бросаться на различные MVC-фреймворки. Очень хорошая книга есть на русском: [PHP 5 для профессионалов](http://www.rsdn.ru/res/book/web/php_5_prof.xml). В ней много чего собрано (и про MVC в том числе).  

Тут более важно понимание именно ООП и как его готовить, нежели MVC. MVC — это всего лишь способ (концепция) разделения логики и не более. Изучив ООП от сих и до сих, будете потом щелкать фреймы как орехи, и ответ на вопрос «Какой фреймворк выбрать для проекта?» не заставит долго ждать.  

Ну а я начинал с CI, потом немного Кейка, ZF, ну и остановился на Yii. 

 Просто посмотри сюда  

[martinfowler.com/eaaCatalog/modelViewController.html](http://martinfowler.com/eaaCatalog/modelViewController.html)  

ещё картинка там же ссылка на описание всех запчасток системы.  

[www.corej2eepatterns.com/catalog.](http://www.corej2eepatterns.com/catalog.)  

затем лучше поковырать Zend Framework и начать программировать на Symfony.  

Но пока не прочел умную литературу лучше *не лезь* в php MVC фреймворки, говорю тебе как php-шник со стажем. 

 И никто не посоветовал [Laravel](http://laravel.com)? 

 Да прибудет ХОЛИВАР!  

  

Я начинал с ZF — классная штука, куча возможностей, огромное сообщество, но сука медленный…  

Сейчас перебрался на Yii — маленький, удобный, разные удобные навороты… а один ActiveRecord чего стоит, ммм… в общем советую именно его…  

  

КакаРНР (CakePHP) — медленный, не удобный, устаревший фрэймворк… но это сугубо моё личное мнение… 

 Порекомендовал бы посмотреть на [Кохану](http://kohanaframework.org/) как второй, так и третьей версии(кардинально отличаются)  

А вообще библиотеки там разные и фреймворки задают вам порядок дейсвий придуманных( и продуманных) другими людьми.  

Это не верный подход. Перепробуйте пару фреймворков, попробуйте их раздербанить, хакнуть и написать свое.  

В конце вас ждет просветление, сознательный выбор фрейворка и глубокое понимание как это работает.  

Последнее очень пригодиться.  

  

Я вот очень люблю объектно-ориентированные шаблоны.  

Но они сносят моск другим програмерам. Поэтому я люблю их исключительно дома: ) 

 Мы использовали в своих проектах Yii, ZendFramework, Symfony. Остановились на последнем, поскольку: генератор админки, много плагинов.  

Из личных впечатлений:  

Zend очень большой, неудобная работа с формами. Но в нем много своих плюсов — компонентная структура позволяет использовать только необходимое, даже в других проектах — подключая классы Zend. Также из плюсов стоит отметить архитектуру, стиль кода, мощную поисковую систему Lucene.  

  

Yii шустрый, понятный. Шустрый благодаря lazy loading, понятный благодаря автору и простоте архитектуры :) В последнее время появилось очень много новых плагинов, развивается wiki. Русскоязычное сообщество развивается (благодаря [samdark.habrahabr.ru/](http://samdark.habrahabr.ru/)). Лично мне пока что Yii нравится больше всего.  

  

Symfony тоже большой, но бегает быстрее Zend. Много классных плагинов, хорошее руководство (в том числе и на русском). Хорошее коммьюнити и талантливый автор (Fabien Potencier). Готовят к выпуску Symfony2 — полностью переделанный Symfony. Symfony2, я думаю, будет прорывом в мире PHP-фреймворков (во многом также благодаря новым возможностям PHP 5.3). Из коробки работает Doctrine ORM, котрую при желании можно легко прикрутить к любому фреймворку, но все же. Генератор админки — по сути обычный CRUD, но благодаря файлам настроек — очень легко переделывается под свои нуждны. Кроме того лично мне удобнее YAML-way — настройка всего через *.yml файлы.  

  

Как-то так. 

 По мне конечно первый комментарий дает самый дельный совет, я тоже всегда изобретаю велосипед, когда хочу что-то понять. Но если именно брать фреймворк то для изучения CI самый простой и понятный на мой взгляд, с хорошей документацией логичной 

 Здесь очень хорошо описана суть дела!!!  

  

<http://habrahabr.ru/post/150267/> 

 Хорошее видео по MVC [mvcphp.ru](http://mvcphp.ru/) 

 Есть специальный плагин, который добавляет в Wordpress простой и при этом мощный MVC-функционал [Wordpress MVC](https://github.com/mavlutovr/wordpressmvc)  
  

Да, Wordpress очень популярна. Там много готовых решений (плагины, темы). Однако разрабатывать не стандартный функционал очень не удобно. Постоянно приходится вручную писать самые банальные вещи, вроде html-код форм, обработку форм и т.д.  
  

Данный плагин как раз для того, чтобы избавиться от подобной рутины. И разрабатывать на Wordpress быстро, удобно. И при этом иметь все преимущества этой самой популярной cms.  
  

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