Laravel — PHP-фреймворк, который не заставляет меня чувствовать себя чайником

25 Май
2012

У меня, возможно, есть кое-какие дизайнерские способности, а также я (почти всегда) получаю удовольствие от веб-разработки. Но горькая правда в том, что я — так себе программист. Я пришел к веб-программироваю “не с той стороны”, просто вставляя блоки <?php ?> в свой html-код. И как всякий программист-чайник, я был не в курсе, что что-то делаю не так.

Так бы и продолжалось, но тут мне понадобилось срочно привести в порядок сайт, который я как-то набросал левой ногой в режиме — лишь бы заработало. Это несложная, но и не простая система управления переводами текстов на разные языки (которая уже давно как нужна мне для нескольких проектов, включая сайт с обоями Vladstudio.com и книжками для айпада Windy Press. Как водится, я начал писать страницу за страницей, не отделяя html-код от mysql-запросов. Но буквально через пару дней я перестал что-либо понимать в своем спагетти-коде. Единственное, что я понимал — нужно сделать еще кучу функций, а я уже не способен адекватно поддерживать свой собственный код.

Пришло время впасть в депрессию (как всякая творческая личность, я иногда в них впадаю). Несмотря на атакующие со всех сторон сроки, работы, обязанности, я решил глубоко вдохнуть и подумать: как мне перестать быть PHP-чайником? Прочитал за выходные руководство по Python. Вот как можно программировать, оказывается! Но увы, время для столь серьезного шага, как смена языка, неподходящее. И я решил попробовать найти php-фреймворк, который обучил бы меня “хорошим манерам” и позволил бы делать больше в меньшие сроки.

logos

Прошло еще несколько дней. Я прочитал все интернеты, изучил сотни форумов, блогов, stackoverflow-ов, скачал и обсмотрел десятки фреймворков. К сожалению, ни один из них не вызвал во мне теплых чувств. Все они тыкали в меня пальцем и кричали с презрением: “Чайник!”. Если вам интересно, вот совсем неполный список:

Мои требования:

  • как можно легче работа с базой даных (mysql конечно же);
  • простой! Я чайник, не забывайте. Опыта работы с фреймворками нет;
  • должен своим примером показать мне, что значить хорошо программировать.


CodeIgniter

(+) хорошая документация, большое сообщество, есть все, что мне нужно;
(-) есть много, чего мне не нужно, архитектура времен РНР4, говорят что уже мертв;

Kohana

(+) улучшенный клон CodeIgniter;
(-) меньше сообщество, хуже документация, бывают проблемы с совместимостью версий;

Dingo

(+) супер! простая, как сапог, есть почти все, что нужно;
(-) увы, продукт заброшен автором;

Symfony

(+) вроде как промышленный стандарт;
(-) я (пока еще) не корпорация, намного больше чем нужно;

Silex

(+) основан на компонентах Symfony2;
(-) есть не все что нужно, и не все, что есть, нужно;

Nette

(+) почти идеальный набор возможностей; хорошая документация; активное сообщество;
(-) основная информация — только если вы говорите по чешски;

Simple PHP framework

(+)?
(-) документации нет в принципе, разработчик советует читать исходный код. Мило!

CakePHP

Yii

(+) всем вроде нравится;
(-) может я тупой, но я не смог в ней разобраться;

Zend

(+) монстр;
(-) монстр;

Fat Free

(+) (-) смешанные чувства

Fuel

(+) (-) смешанные чувства

…и это далеко не полный список! В отчаянии, я уже было собирался начать еще раз с нуля, и по возможности писать упорядоченный код, с учетом свежеполученных знаний.

Пара дней такой разработки — и еще один провал маячит на горизонте. Внезапно, в этой заметке на Блоге, один из комментаторов упомянул фреймворк, о котором я еще не слышал — Laravel, автор — Taylor Otwell.

sponge bob

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

Ian Landsman, работодатель Тейлора, объясняет, почему Laravel получился так хорош:

I’ve come to since find out that Taylor wasn’t really a PHP guy, working primarily in .NET before deciding to pickup PHP a few years back. I think a great deal of why Laravel is so unique is due to that fact. He learned PHP at 5.3+. Most people you see working on PHP frameworks have been around since 4 and before. … Not just the simple thing of not supporting PHP < 5.3, but not knowing PHP < 5.3 means he was unencumbered by all that mental debt 🙂


Попробую перевести:

… я обнаружил, что Тейлор на самом деле не был PHP-программистом, он писал на .NET и начал работать с PHP только недавно. Думаю, отчасти поэтому Laravel получился таким удачным. Тейлор учил PHP уже с версии 5.3. А большинство популярных фреймворков построены на принципах работы PHP 4 или ранее… То есть он не просто “не поддерживает” PHP < 5.3 — он вообще не писал на PHP < 5.3, поэтому не был обременен накопленными привычками.


Вот что мне нравится в Laravel:

  • он молодой.
  • поскольку он молодой, он еще не так популярен, как того заслуживает. Однако сообщество есть, и оно приятное.
  • Laravel определенно сделает меня как программиста на порядок лучше.
  • документация и туториалы наконец-то смогли растолковать мне, что значит MVC (раньше я “понимал”, но не мог “представить”, не было образа в голове).
  • я дизайнер, и я обращаю внимание на внешний вид. Сайт Laravel весьма достойный:


screenshot

Перед тем, как начать читать документацию (или параллельно с этим), откройте отличный набор туториалов от Dayle Rees. Несколько отрывков в моем переводе:

… Откройте файл с настройками. Если вы когда-либо работали с базой данных, все будет вам знакомо. У вас же при себе логин к базе? Нет? Идите и срочно найдите…. Вы уже вернулись?

… Мы успешно создали таблицу. Ой, нет, мы ошиблись! (мы не ошиблись, но я люблю драматические повороты, и мне нужен повод использовать rollback).

… DB::table(‘shoes’)->take(10)->get();
Зачем мне 10 пар обуви?

(потеряется в переводе) … Relationships are beautiful. No I haven’t gone all soppy. I mean relationships between tables, in Eloquent they are beautiful.

(потеряется в переводе) … You see artisan takes the current date, and adds the time in His format to create the file name. The reason for this is that dates are very important to migrations (and single people),…





На самом деле, у меня нет вообще никакого опыта работы с Laravel, и через месяц я, возможно, напишу новую статью про то, какой это на самом деле ужас и кошмар. Но думаю, что это не произойдет! С нетерпением жду понедельника, чтобы открыть редактор и начать творить.

P.S. Кинул в форум Laravel ссылку на эту статью на английском языке — и оказалось, что Тейлор, автор фрейморка, любит мои обои! То ли мир тесен, то ли я знаменит, то ли и то, и другое.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх