Сегодня 7 июля, понедельник ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7281
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
RMCreative.ru - Блог
RMCreative.ru - Блог
Голосов: 1
Адрес блога: http://rmcreative.ru/feed/
Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL
 

Laravel

2012-06-05 13:45:37 (читать в оригинале)

Как разработчику Yii, мне полезно знать, что происходит вокруг. Пару недель назад посмотрел фреймворк Laravel. О нём уже пытались написать на хабре. Было это в мае, но из песочницы пост не выбрался. Со второй попытки вроде получилось. Сообщество активно комментирует.

По просьбам читателей, опишу, что я увидел в нём интересного и какие выводы были сделаны.

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

Итак, интересные для меня штуки:

Приложение по умолчанию вынесено за вебрут

Решение хорошее. Так безопасней. В Yii 1.1 приложение внутри вебрута потому как на старте Yii разворачивали его на всяких Dreamhost, на которых по-другому не запускалось. К Yii 2 планируется предоставлять несколько вариантов скелета приложения под разные размеры и окружения.

Решение для конфигурации под несколько окружений

При разработке относительно крупных проектов это приходится делать каждый раз (ну или использовать свою заготовку). Получить такую штуку из коробки приятно, хотя сделать самому тоже не сложно, тем более, многие предпочитают собирать проекты Phing-ом или Ant-ом.

IoC контейнер

Контейнер — популярная нынче штука. Самое забавное, что понимают, что это такое, для чего нужно и как использовать очень немногие. Чаще всего у разработчика просто взрывает мозг и, либо он отказывается от этой штуки, либо слепо (и часто неправильно) его использует. По-моему, лучшим решением является тихое использование контейнера в ядре без заострения на нём особого внимания. Кому нужно — найдут.

Документация

Документация написана хорошо. Язык простой, есть примеры, описаны частые затыки и пути их разрешения. На сайте, к тому же, приятное оформление, поэтому читается хорошо. Также вся документация поставляется в виде исходника вместе с фреймворком, но, к сожалению, оформлена настолько вырвиглазно, что приходится лезть на сайт.

Часто хвалят сами себя :)

Статические классы

В Laravel их много. Очень много. Идея очень похожа на хелперы из CodeIgniter и на CHtml из Yii. В общем-то, учитывая LSB, это не такая страшная проблема. Хороший момент, что функционал довольно чётко поделен между этими классами.

Самое интересное в этой части, возможность расширять функционал этих классов:

HTML::macro('my_element', function()
{
    return '<article type="awesome">';
});
 
echo HTML::my_element();

Плохо, что в некоторых местах идёт в этом направлении явный перегиб. Это касается классов, которые, скорее всего, будут расширяться разработчиком. macro, возможно, позволит решить проблему, но разобраться в коде будет тяжело.

Bundles

Система пакетов — штука замечательная. Позволяет упорядочить множество расширений, которые пишут пользователи. Для Laravel, на данный момент, большинство расширений — обёртки популярных классов. То, что используются bundles — хорошо. То, что для них сделан велосипед — не очень, ведь в скором времени Composer вытеснит остальных из это ниши (я на это очень надеюсь).

Консоль

Реализация не лучше и не хуже остальных. Понравилось, что используется выделение цветом, как в Symfony 2.

События

Используются по полной. Глобальны, не привязаны к объектам. С одной стороны это позволяет писать довольно гибкий код, с другой — можно с этой гибкостью и не совладать, если пользоваться неправильно.

В Yii2 будет нечто среднее между декларативным способом Yii 1 и абсолютно свободным из Laravel.

ORM

Нижний слой работы с БД довольно обычный, похож на Yii. Также используется PDO, примерно такой же построитель запросов. Вот ORM у Laravel интересный. Из хорошего можно назвать:

  • dirty attributes для моделей (это когда модель сохраняется только в случае, если изменились её атрибуты). Будет в Yii2.
  • Очень интересный способ описания отношений. Понравился. Сами отношения классические. Такие, какими они были во времена становления Rails и Prado.
  • Поддержка сохранения связанных объектов. За счёт использования dirty attributes, реализация довольно простая и эффективная. Yii2 будет уметь сохранять связанные записи, правда, чуть по-другому.
  • В общем, API этой части хорош.

Из нехорошего:

  • Не используются метаданные.
  • Нет валидации в том виде, что есть в Yii.
  • Модели безсхемные. Можно записать в модель Post, например, что-то вроде dateOfFirstPost. До сохранения мы не узнаем, что такого атрибута у нас нет. Ошибку получим уже после попытки выполнения SQL в том виде, в котором её отдаёт СУБД.
  • Массовое присвоение включено по умолчанию. В условиях отсутствующей валидации в моделях и их безсхемности, штука для безопасности приложения фатальная. GitHub уже поплатился за такое-же решение в RoR. Самое забавное, что решение проблемы, которое попало в master — добавление возможности отключить массовое присвоение. В RoR так было с самого начала и это, как показала практика, не спасло программистов GitHub от ошибки.
  • Жадная загрузка с условием. Штука мощная, но слишком сложная для реального использования. Код получается запутанным.

Роутинг

Вместо контроллеров возможно использовать анонимные функции. Модно, но бесполезно. Из-за этой штуки привычные настройки контроллера смещены в роуты: фильтры, авторизация и др.

Очень странное решение с вложенными контроллерами. Особого смысла так делать нет. Плюс имена контроллеров в этом случае строго определённые и похожи на Zend Framework 1, при том, что всё остальное именуется в другом стиле.

Пароли

Разработчик отказался поддерживать небезопасные md5 и sha1 в пользу bcrypt. Полностью поддерживаю.

View

Слой выполнен в виде кучи статических классов и хелперов. Хелперы таким образом делать, в общем, оправдано, а вот сам View — сомнительно. Скорее всего, именно эту часть будут расширять под свои нужны, прикручивая Twig или Smarty.

Assets

Похоже на Yii, но не настолько гибко. Для тех, кто пользовался Yii, ничего интересного.

Итоги

В итоге неплохо, но и не замечательно. Переход на Laravel с Yii 1.1 для боевых проектов сомнителен. Для тех, кому нравится CodeIgniter и не нравится Yii — хороший вариант.



Буду на DevConf 2012

2012-06-05 10:56:10 (читать в оригинале)

9 июня выступлю на DevConf с чем-то среднем между UWDC и YiiConf. Постараюсь привнести нового и интересного.

Программа обещает быть интересной. Если получится, доклады послушаю в таком порядке:

  • Tuna Framework - архитектурный web-framework.
  • Проектирование ERP, CRM систем с нуля.
  • PHP 5.4 - особености перехода (от непосредственного автора).
  • Рефакторинг и второе рождение проекта на примере Zend Framework 2.0.
  • Оптимизация процесса создания сайта на этапе верстки.
  • MariaDB 5.5 – ветка MySQL с эволюционными и революционными изменениями.
  • Sprockets under the hood.
  • Путь самурая через код: Просто, сложно, нудно.
  • Yii, его разработка и Yii2.
  • Как мы разрабатываем Сфинкс.

А десятого будет Maxidrom…



Facebook FB.ui send на мобильных устройствах

2012-06-01 14:34:48 (читать в оригинале)

В очередной раз Facebook заставил попотеть. После реализации приглашалок через диалоги Facebook выяснилось, что они никак не хотят работать на мобильных девайсах, выдавая загадочную API Error Code 3, Unknown method. This method isn't supported by this display type.

Оказывается, вызывать диалоги на мобильных устройствах и планшетах через JavaScript SDK — дохлый номер. Однако, примеры с URL в описании диалогов работали, поэтому родилась вот такая штука:

// определяем, мобильный ли браузер
// не забудьте iPad
if(isMobileBrowser()) {
  var params = {
    // если не используете SDK, можно просто вставить ID приложения
    app_id: FB._apiKey,
    name: header,
    link: link,
    description: description,
    // позволяет видеть ошибки, лишним не будет
    show_error: 1,
    to: userID,
    redirect_uri: window.location.href,
    // не рисовать лишнее, ресайзить попап автоматом
    display: 'popup'
};
// строим URL
var url = 'http://www.facebook.com/dialog/send?';
var parts = [];
$.each(params, function(key, val){
  parts.push(key+'='+encodeURIComponent(val));
});
// открываем попап
var facebookPopup = window.open(url+parts.join('&'),'facebook-popup','height=300,width=200');
// ставим на него фокус
if (window.focus) {
  facebookPopup.focus();
}


XHProf для Windows

2012-05-31 12:44:28 (читать в оригинале)

Вопреки распространённому мнению о том, что PHP-профайлер, созданный в недрах Facebook, работает только под Linux, есть билды и под Windows. Неофициальные, но вполне себе рабочие.

  • Билды под Windows
  • Документация

При установке не забываем про совместимость билда расширения и PHP.



YiiConf 2012, как это было

2012-05-30 04:18:36 (читать в оригинале)

Это случилось! 19 Мая состоялась первая конференция, посвящённая фреймворку Yii — YiiConf 2012. Местом проведения был выбран замечательный город Киев, встретивший нас хорошей погодой, приветливыми людьми и замечательным пивом.

Конференция собрала более 200 участников русскоязычного сообщества. Благодаря Вячеславу (like2dev) и дубль-гис с точки зрения организации всё прошло просто замечательно. Организовать всё — дело очень нелёгкое, но у Вячеслава, похоже, в этом талант. Первый блин получился очень хорошим. Надеюсь на второй.

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

Хотя в случае YiiConf вышло очень гармонично. Состав докладчиков получился сильным и слушать было интересно. Рассказывать тоже. Вопросов море, что особо радует.

Для тех, кто не смог попасть на конференцию или хочет что-нибудь вспомнить, доступны материалы. Сейчас это пара фотоальбомов и презентации. Вячеслав потихоньку выкладывает видео. Особо рекомендую «слоистую архитектуру».



Страницы: ... 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 ... 

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»
Изменения рейтинга
Категория «Священники»
Взлеты Топ 5
Падения Топ 5


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.