developer blog

451 degrees Fahrenheit

Archives Posts

Второе обновление в системе плагинов Symfony

August 10th, 2008 by pilot

Разработчики не перестают удивлять скоростью реакции на фидбеки от комьюнити. Вот очередная серия доработок к системе плагинов:

  • Появилось новое поле для описания плагина. Это поле не зависит от версии плагина и будет выводиться на главном табе “Plugin Information”.
  • Каждый плагин можо связать с ORM, который он использует. Первоначально это свойство задавалось автоматически основываясь на имени плагина и некоторых “таинственных” характеристиках. Теперь это поле может задать разработчик. С этого момента информаци о используемом ORM в плагине станет более достоверной.
  • Добавлен полезный инструмент для тестирования README файла перед созданием PEAR пакета. Для проверки заходим на страницу проверки валидности Markdown. На этой же странице вы найдете и шпаргалку по разметке Markdown.

Read the rest of this entry »

Filed under Symfony having No Comments »

Archives Posts

Очередной Symfony camp, пройдет в Голландии

August 9th, 2008 by pilot

symfonycamp_logo

Ежегодная встреча сообщества symfony состоиться 12-13 сентября в Dutch Open Projects (DOP), что в Голландии.

Мероприятие начнется с тренинга по symfony 1.1, предствляет Nicolas Perriault (менеджер релиза symfony 1.1).

Докладов не так много, и на мой взгляд как-то маловато для такого мероприятия, вот список некоторых из них:

  • Обучающие уроки от Yahoo! (Dustin Whittle)
  • Производительность symfony (Fabian Lange) - это интересно
  • symfony и Doctrine vs Propel (Jonathan Wage, главный разработчик Doctrine)
  • Библиотеки интерфейса пользователя от Yahoo (Dustin Whittle)
  • Плагины и как создавать свои собственные (Lambert Beekhuis)
  • Генерация Админ панели (Ian Christian)
  • symfony 2.0

Кто созрел, регистрируется, и потом рассказуется всем нам как там было хорошо ))

Filed under Symfony having No Comments »

Archives Posts

Symfony, у плагинов появился новый дом!

August 1st, 2008 by pilot

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

Но существующаю система работы с плагинами не может ответить на вопросы:

  • А есть ли плагин который добавляет “вот такую штуку” ?
  • А поддерживает ли мой любимый плагин новую версию symfony 1.1?
  • А совместим ли плагин с Doctrine?
  • А какие самые популярные плагины?
  • Как я могу помочь доработать плагин?

С текущей системой управления плагинами Trac, на эти вопросы ответить тяжело. Сейчас в системе более 200 плагинов, вот потому и решино было сделать для них отдельную систему.

Read the rest of this entry »

Filed under Symfony having 1 Comment »

Archives Posts

Список команд symfony 1.1 в сравнении с symfony 1.0

July 28th, 2008 by pilot

Команды в symfony 1.1 изменились и теперь используют синтаксис пространства имен. Пока что трудно сказать стало ли от этого все хорошо или нет. Старый набор команд так же работает ввиде алиасов на новые имена команд.

Таблица старых и новых команд: 

Old task name New task name
————————– —————–
clear-cache cache:clear
clear-controllers project:clear-controllers
disable project:disable
downgrade [Not implemented]
enable project:enable
fix-perms project:permissions
freeze project:freeze
init-app generate:app
init-batch [Not implemented]
init-controller [Not implemented]
init-module generate:module
init-project generate:project
log-purge log:clear
log-rotate log:rotate
plugin-install plugin:install
plugin-list plugin:list
plugin-uninstall plugin:uninstall
plugin-upgrade plugin:upgrade
propel-build-all propel:build-all
propel-build-all-load propel:build-all-load
propel-build-db propel:build-db
propel-build-model propel:build-model
propel-build-schema propel:build-schema
propel-build-sql propel:build-sql
propel-convert-xml-schema propel:schema-to-yml
propel-convert-yml-schema propel:schema-to-xml
propel-dump-data propel:data-dump
propel-generate-crud propel:generate-crud
propel-init-admin propel:init-admin
propel-init-crud [Not implemented]
propel-insert-sql propel:insert-sql
propel-load-data propel:data-load
sync project:deploy
test-all test:all
test-functional test:functional
test-unit test:unit
unfreeze project:unfreeze
upgrade project:freeze
Filed under Symfony having No Comments »

Archives Posts

Symfony 1.1 - совместимость с версией 1.0

July 21st, 2008 by pilot

Столкнулся с проблемой, перехода на новую версию.

Проапргрейдил свой проект до версии 1.1, но так как рисование форм было выполнено в версии 1.0, то вылезли ошибки:

Fatal error: Call to undefined function form_tag()
Fatal error: Call to undefined function input_tag()

Для решения этой проблемы в файле apps/your_application/config/settings.yml включаем совместимость с версией 1.0

compat_10: on

Вуаля, теперь конструкции form_tag() и тд, работают и в новой версии.

Filed under Symfony having No Comments »

Archives Posts

Концепт панели администрирования в symfony 1.2

July 17th, 2008 by pilot

Первое что обещают разработчики symfony, первый релиз которой намечается на октябрь месяц, это новая панель администрирования (точнее, новый генератор новой панели)

В разработке появилось первое описание концепта новой панели администрирования.

Пердлагается разделить модель на две группы:

  • Информационные записи (несущие определнные значения)
    - Номер
    - Город
    - Пользователь
    - Страница
  • Контекстные записи (которые прдлагают информцию в контексте, чаще всего “групп” или “категорий”)
    - Група
    - Тэг
    - Категория
    - Тип

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

Контекстные записи

contextual-records-1 contextual-records-3
contextual-records-2
Одновременное изменение

batch-edit
Виджеты, табы, глобальная навигация

widgets

Поддержка вложенных множеств

nested-set

Расширение списка действий

advanced-actions

Так же заложена поддержка наследования и и18и

Filed under Symfony having 4 Comments »

Archives Posts

Symfony стала доступна в официальном репозитории Debian / Ubuntu Linux

July 13th, 2008 by pilot

symfony Хорошая новость для всех пользователей Debian / Ubuntu и администраторов серверов.

На данный момент доступна ветка symfony 1.0, находится она в “нестабильной” версии репозитория и в скором времени появится в “тестируемой” версии.

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

Сейчас ведется работа над пакетом Symfony 1.1 (пишуться ман хелпы, описываются зависимости и тд.)

Пакет php5-symfony для Debian

Filed under Symfony having 2 Comments »

Archives Posts

Различия между 1.0 и 1.1 “The Definitive Guide to symfony”

July 9th, 2008 by pilot

Думаю многим будет интересно узнать, а что собственно поменялось в  книгах по symfony версий 1.0 и 1.1

На форуме проекта открыта тема www.symfony-project.org/forum/index.php/t/14038/, в которой показаны изменения по track’y  symfony.

Спасибо за ссылку Asanto

Filed under Symfony having No Comments »

Archives Posts

Вот он долгожданный релиз symfony 1.1

June 30th, 2008 by pilot

release1.1 Последнее время разработчики усиленно трудились на новой версией symfony и сегодня этот день настал, можно поздравить разработчиков с выходом нового релиза symfony framework!

 

Итак список нового функционала в symfony 1.1:

  • Новая архитектура symfony более настраиваяемая и разделенная, позволяет легко использовать или заменять части фреймворка,
  • Новая объекто-ориентированный form framework, позволяет налету создавать формы и повторо их использовать,
  • Совершенно новая система задач (task system) позволяет быстро создавать рассширяемые батч скрипты и утилиты командной строки,
  • Теперь Symfony имеет приличный YAML parser, с подробными сообщениями об ошибках,
  • Новый менеджер плагинов совместим со стандартом PEAR API, отображает зависимости плагинов, и предлагает набор опций для лучшего управления тем что вы установили,
  • Система обработки форматов позволяет вашему приложению вести себя по разному в зависимости от запроса с iPhone, от поисквого бота, или от браузера,
  • Propel 1.2 ORM теперь представлен в виде плагина, что позволяет вам очень просто перейти на Doctrine или Propel 1.3,
  • Плагин sfCompat10Plugin обеспечит работу вашего проекта основанного на версии 1.0 после обновления до версии 1.1!
  • Система роутинга теперь кешируется, что приведет к значительному увеличению производительности если в вашем приложении разветвеленный роутинг. Так же, класс роутинга (routing class) больше не синглтон (singleton), так что теперь можно легко расширять его под свои нужды,
  • Последнее, не совсем фича, более чем 8,500 юнит и функционал тестов гарантируют общую ставильность кода фреймворка. Количество тестов удвоилось в 1.1 по сравнению с 1.0!

Инсталяция и обновление symfony

Для инсталяции symfony 1.1 через PEAR, теперь нужно явно указывать какую версию вы хотите установить. И так, если вы хотите установить стабильную 1.1.0 версию, выполняем:

$ pear install symfony/symfony-1.1.0

В случае если вы хотите стабильную 1.0 версию:

$ pear install symfony/symfony-1.0.17

Если вы предпочитаете скачивать самостоятельные архивы, качайте архив symfony-1.1.0.tgz или symfony-1.1.0.zip и распакуйте в любую папку на вашем диске.

Если вы новичек в symfony, для вас доступна урощенная версия “песочница” (sandbox) :

Ну и если ты совсем крут и у тебя есть доступ к SVN, просто выполни чекаут ветки 1.1:

$ svn co http://svn.symfony-project.com/branches/1.1/ /path/to/symfony

Все остальное хорошо и в деталях расписано в инструкции по установке symfony.

Обновление существующего проекта

Если вы планируете обновить существующий на symfony 1.0 проект для использования новой версии 1.1, внимательно прочтите UPGRADE файл, который есть в каждом дистрибутиве symfony. Если же вы сейчас используете symfony RC2, убедитесь что вы выполняли команду symfony project:upgrade,перед тем как обновите библиотеки symfony.

Относительно документации

Вся документациия обновлена и отображает изменения между symfony 1.0 и новой версией. Комьюнити оправдало наши ожидания и способствовало переводу документации на 10 новых языков менее чем за 15 дней!

В cookbook добавили несколько полезных примеров и опубликовали первые 4 главы книги о новом фреймворке для работы с формами. API документация так же поможет вам легко найти все что вам нужно по всему коду symfony.

Поддержка

Symfony 1.1, как переходной релиз, будет поддерживаться в течении одного года начиная с 30.06.2008, тогда как 1.0 все еще будет поодерживаться до Января 2010.

Следующий релиз

Фабьен и основная команда уже начали работу над новым функционалом версии 1.2, которая будет выходить по датам, а не по новому функионалу. Таже, цикл релизов будет радикально уменьшен (похоже, что разаботчкик будут использовать agile - scrum методологию). Можно ожидать инетесных фич и улучшений в новом релизе, начиная с совершенно нового генератора админ интерфейса основанного на новой системе работы с формами представленной в symfony 1.1.

Filed under Symfony, php having 1 Comment »

Archives Posts

Архитектура symfony 1.1

June 24th, 2008 by pilot

 

Перед окончательным релизом symfony 1.1 (который должен произойти уже на этой неделе), Разработчики расказали о новой архитектуре symfony 1.1. Кроме уже существующих новых возможностей, новая версия - это год сложной работы по внутренней перестройке фреймворка. Итак давайте покапаемся во внутренностях!

Платформа symfony (the symfony platform)

symfony 1.1 основана на множестве сплоченных, но отдельных классах - symfony platform:

The symfony platform

Каждый класс в symfony platform можно использовать без общей MVC (Модель Вид Контроллер) архитектуры. Классы в symfony platform не имеют зависимостей, только одно условие требуется для их использования - это предварительная регистрация в symfony autoloader:

require_once '/path/to/sfCoreAutoload.class.php';
sfCoreAutoload::register(); 

Написав всего пару строк, вы можете использовать любой класс из symfony platform. К примеру если один из ваших проектов не использует symfony, вы все равно можете использовать класс sfYaml просто подключив symfony autoloader:

require_once '/path/to/sfCoreAutoload.class.php';
sfCoreAutoload::register();// load some YAML file or string
$config = sfYaml::load('/path/to/a/file.yml');
$config = sfYaml::load(<<<EOF
config:
  key: value
  foo: [bar, foobar]
  bar: { bar: foo }
EOF);// dump some array to YAML
$yaml = sfYaml::dump($config);  

То же самое касается всех классов, к примеру класс sfCache:

require_once '/path/to/sfCoreAutoload.class.php';
sfCoreAutoload::register();$cache = new sfSQLiteCache(array('database' => dirname(__FILE__).'/cache.db'));
$cache->set('foo', 'bar');
$value = $cache->get('foo');  

В примерах используется SQLite backend, но symfony таже предоставляется backends основанные на File, APC, XCache, EACcelerator, и Memcache.

Даже если использование независимых классов кажется естественным, symfony platform пошла на шаг дальше с такими классами как sfRequest или sfResponse. Посмотрим пример где используются эти два класса для создания простого скрипта ‘Hello World’:

require_once '/path/to/sfCoreAutoload.class.php';
sfCoreAutoload::register();

$dispatcher = new sfEventDispatcher();$request = new sfWebRequest($dispatcher);
$response = new sfWebResponse($dispatcher);$content = 'Hello '.$request->getParameter('name', 'World');$response->setContent($content);
$response->send();  

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

К примеру, класс sfPatternRouting прослушивает события request.filter_parameters:

$callback = array($this, 'filterParameters');
$dispatcher->connect('request.filter_parameters', $callback);  

И когда зпрос создан, sfWebRequest уведомляет событие request.filter_parameters:

$event = new sfEvent($this, 'request.filter_parameters');
$parameters = $dispatcher->filter($event, $parameters);  

Итак, даже если классы sfWebRequest и sfPatternRouting разделены, они автомотичеки общаются друг с другом, когда они разделяют общий диспечер (dispatcher).

Чтоб представить эту возможность, изменим чуток в предыдущем примере, добавим объект роутинга (routing object), который подключается к приложению ‘Hello World’ по шабону /hello/:name:

require_once '/path/to/sfCoreAutoload.class.php';
sfCoreAutoload::register();$dispatcher = new sfEventDispatcher();$routing = new sfPatternRouting($dispatcher);
$routing->connect('hello', '/hello/name');$request = new sfWebRequest($dispatcher);
$response = new sfWebResponse($dispatcher);$content = 'Hello '.$request->getParameter('name', 'World');$response->setContent($content);
$response->send();  

Теперь, если вы сохраните этот скрипт как index.php в root папке вашего веб сервера, вы можете увидеть работу приложения набрав в браузе, к примеру /index.php/hello/451fahrenheit.

Это хорошо если вы хотите использовать некоторые интересные функции, которые предлагает symfony, без использования всей MVC архитектуры.

Это так же прекрасный способ перевести ваше старое приложение на symfony. Вместо того, чтоб переписывать все с нуля, вы можете ввести концепцию symfony один раз.

Вы так же можете создать свой собственных фреймворк основаный на symfony platform. Вам не нужно выдумывать колесо, symfony platform все что вам нужно для создания классного фреймворка:

  • sfRequest/sfRouting: Запросы
  • sfUser/sfStorage: Пользователь/Сессии
  • sfForm: Фреймворк для создания форм 
  • sfCache: Работа с кешем 
  • sfOutputEscaper: Защита от  XSS атак

  • sfResponse: Ответы

Конечно, symfony framework сам основан на symfony platform:

The symfony MVC framework

Класс sfConfiguration предлагает способ для конфигурирования и настройки вашего приложения. Класс sfContext  действует как регистр который хранит ссылки на все объекты ядра. И благодаря конфигурационному файлу factories.yml, вы очень легко можете настраивать все зарегистрированные классы, всего лишь  отредактировав YAML файл.

Symfony MVC framework предлагает ряд дополнительных классов на вершине symfony framework, как показно ниже:

The symfony MVC framework

Слой Модели (Model layer)  предствален сторонними библиотеками, Propel или Doctrine. Даже если symfony 1.1 связана с плагином Propel, нет ничего проще перейти на Doctrine, установив sfDoctrinePlugin. Обе ORMs предлагают одинаковый уровень интеграции с symfony.

Слой Вид (View layer) представлен классом sfView , набором хелперов (helpers), и шаболнами (templates) разработчика.

Слой Контроллер (Controller layer) основан на цепочке фильтров (filter chine) и действий (actions) определенных разработчиком.

Начиная с версии 1.1, symfony одним из наиболее разделенных фреймворков существующих на PHP, даже болше чем Zend Framework. К примеру,  sfForm фреймворк используется без любых классов MVC в отличии от Zend_Form который несколько привязан к слоям контроллер и вид (controller and view layers).

Filed under Symfony, php having 1 Comment »

« Previous Entries