<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>PHP фреймворк Symfony</title>
	
	<link>http://symfony.org.ua</link>
	<description>Сайт поддержки разработчиков на фреймворке Symfony</description>
	<pubDate>Tue, 09 Jun 2009 12:33:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/symfonyorgua" type="application/rss+xml" /><item>
		<title>Окончивается поддержка Symfony 1.1</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/7pasPUL0Hgk/</link>
		<comments>http://symfony.org.ua/2009/06/okonchivaetsya-podderzhka-symfony-11/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 12:33:04 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
		
		<category><![CDATA[Новости]]></category>

		<category><![CDATA[symfony 1.1]]></category>

		<category><![CDATA[поддержка]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=92</guid>
		<description><![CDATA[Итак как и обещали разработчики в июне прекращается дальнейшая поддержка Symfony версии 1.1
На сегодняшний момент смысл использовать версию symfony 1.1 есть только в случае если на сервере вы используюете php  версии 5.1, если же на ваших серверах установлена версия php 5.2.4+ мы настоятельно вам рекомендуем обновится до версии symfony 1.2. Процесс обновления предельно прост.
Так же стоит [...]]]></description>
			<content:encoded><![CDATA[<p>Итак как и обещали разработчики в июне прекращается дальнейшая поддержка Symfony версии 1.1</p>
<p>На сегодняшний момент смысл использовать версию symfony 1.1 есть только в случае если на сервере вы используюете php  версии 5.1, если же на ваших серверах установлена версия php 5.2.4+ мы настоятельно вам рекомендуем обновится до версии symfony 1.2. Процесс <a href="http://www.symfony-project.org/installation/1_2/upgrade" target="_blank">обновления</a> предельно прост.</p>
<p>Так же стоит отметить, что баг фиксы связанные с безопастность в версии symfony 1.1 будут выходить еще в течении 1 года до июня 2010 (в случае их появления)</p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/7pasPUL0Hgk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2009/06/okonchivaetsya-podderzhka-symfony-11/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2009/06/okonchivaetsya-podderzhka-symfony-11/</feedburner:origLink></item>
		<item>
		<title>UA SymfonyCamp в Киеве 16го мая</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/QFW89AFl5kg/</link>
		<comments>http://symfony.org.ua/2009/03/symfony-camp-v-kieve-16go-maya/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 15:14:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Общее]]></category>

		<category><![CDATA[Киев]]></category>

		<category><![CDATA[конференция]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=90</guid>
		<description><![CDATA[
Итак, 16 мая мы планируем провести конференцию по фреймворку Symfony.
Мероприятие будет проходить по адресу: Киев, ул. Предславинская, 12 (http://predslavinskaya.com.ua/). Партнер и соорганизатор SymfonyCamp - WorldWebStudio
Предварительная программа мероприятия:

Вступление в symfony. Краткий экскурс для новичков
Система роутинга в symfony 1.2
Публикация symfony проекта в web и наращивание нового функционала без потери работоспособности
Разработка высоконагруженных систем, методы оптимизации производительности
Функционально и юнит [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://symfony.org.ua/wp-content/2009/03/new-copy.jpg"><img class="alignnone size-full wp-image-89" title="new-copy" src="http://symfony.org.ua/wp-content/2009/03/new-copy.jpg" alt="" width="205" height="205" /></a></p>
<p>Итак, 16 мая мы планируем провести конференцию по фреймворку Symfony.</p>
<p>Мероприятие будет проходить по адресу: Киев, ул. Предславинская, 12 (<a href="http://predslavinskaya.com.ua/">http://predslavinskaya.com.ua/</a>). Партнер и соорганизатор SymfonyCamp - <a href="http://worldwebstudio.com">WorldWebStudio</a></p>
<p>Предварительная программа мероприятия:</p>
<ul>
<li>Вступление в symfony. Краткий экскурс для новичков</li>
<li>Система роутинга в symfony 1.2</li>
<li>Публикация symfony проекта в web и наращивание нового функционала без потери работоспособности</li>
<li>Разработка высоконагруженных систем, методы оптимизации производительности</li>
<li>Функционально и юнит тестирование в symfony</li>
<li>Сравнительный анализ symfony и Rails</li>
<li>Нововведения в Symfony2</li>
<li>&#8230;</li>
</ul>
<p><span id="more-90"></span></p>
<p>Желающие посетить мероприятие - пишите на  movchan@gmail.com.</p>
<p>Если же не против выступить с докладом - в письме указывайте название доклада.</p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/QFW89AFl5kg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2009/03/symfony-camp-v-kieve-16go-maya/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2009/03/symfony-camp-v-kieve-16go-maya/</feedburner:origLink></item>
		<item>
		<title>Изменения на сайте: список компаний</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/39d_o43ql4Y/</link>
		<comments>http://symfony.org.ua/2009/03/izmeneniya-na-sayte-spisok-kompaniy/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 11:53:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Компании]]></category>

		<category><![CDATA[Общее]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=85</guid>
		<description><![CDATA[Теперь на сайте публикуется страница компаний, которые работают с Symfony.
Для того чтобы попасть в список, пишите письмо на movchan@gmail.com.
UPD. В письме прошу указывать пару ссылок на проекты которые выполнены на Symfony.
]]></description>
			<content:encoded><![CDATA[<p>Теперь на сайте публикуется <a href="http://symfony.org.ua/kompanii/">страница компаний, которые работают с Symfony</a>.</p>
<p>Для того чтобы попасть в список, пишите письмо на movchan@gmail.com.</p>
<p><strong>UPD.</strong> В письме прошу указывать пару ссылок на проекты которые выполнены на Symfony.</p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/39d_o43ql4Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2009/03/izmeneniya-na-sayte-spisok-kompaniy/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2009/03/izmeneniya-na-sayte-spisok-kompaniy/</feedburner:origLink></item>
		<item>
		<title>Успешные внедрения Symfony: студия “Artsofte”</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/vvsx38HBYuY/</link>
		<comments>http://symfony.org.ua/2009/03/uspeshnyie-vnedreniya-symfony-studiya-artsofte/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 09:34:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Компании]]></category>

		<category><![CDATA[Общее]]></category>

		<category><![CDATA[Artsofte]]></category>

		<category><![CDATA[внедрение]]></category>

		<category><![CDATA[студия]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=81</guid>
		<description><![CDATA[
Artsofte – одна из российских студий которая недавно открыто заявила о том что использовала, использует и будет использовать в своих проектах фреймворк Symfony. Как борются с «Сифонией» в компании  мы решили узнать подробнее у директора студии, Николая Адеева. 
Николай, расскажите кратко о вашей студии. Как давно работаете? Сколько человек работает в студии сейчас?
Максимально подробная инфа [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://symfony.org.ua/wp-content/2009/03/logo_big.gif"><img class="alignnone size-full wp-image-82" title="logo_big" src="http://symfony.org.ua/wp-content/2009/03/logo_big.gif" alt="Artsofte" width="200" height="69" /></a></p>
<p><em><a href="http://artsofte.ru">Artsofte</a> – одна из российских студий которая недавно открыто заявила о том что использовала, использует и будет использовать в своих проектах фреймворк <a href="http://symfony-project.org">Symfony</a>. Как борются с «Сифонией» в компании  мы решили узнать подробнее у директора студии, Николая Адеева. </em></p>
<p><strong>Николай, расскажите кратко о вашей студии. Как давно работаете? Сколько человек работает в студии сейчас?</strong></p>
<p>Максимально подробная инфа о студии на нашем сайте – <a href="http://artsofte.ru">www.artsofte.ru</a>.</p>
<p>К тексту  мы подошли очень трепетно потому что аж с 2005 года никак не занимались своим сайтом. Поэтому когда летом 08 «релизнули» свой корпоративный ресурс отдали ему много сил. В частности  в нашей <a href="http://www.artsofte.ru/articles/about-company/history ">истории</a> детально и красочно расписаны все вехи развития.</p>
<p>А сейчас нас 25 заряженных фанатиков.<span id="more-81"></span></p>
<p><strong>Расскажите как у вас все начиналось с Symfony?</strong></p>
<p>Перевести всю разработку на несамописный фреймворк желание было уже давно. Среди тех фреймворков, которые удалось попробовать на зуб - Zend был слишком громоздок, тяжёл и нёс в себе много ненужного + на то время с документацией было плохо.</p>
<p>CakePHP  сразу не устроил тем, что он заточен под PHP4. Из этого вытекало достаточно много неприятных последствий, да и не было смысла вспоминать про PHP4.</p>
<p>CodeIgniter достаточно привлёк и документацией и многих другим, но возить на нём можно простые проекты, проекты посложней - уже потребовали бы огромных танцев с бубном.</p>
<p>На symfony наткнулись совершенно случайно и решили попробовать. То что сразу попалось на глаза - генераторы, чрезмерная настраиваемость, лёгкость в создании модулей и удобная архитектура расположения самого кода - привели мгновенно в восторг. Постепенно фреймворк осваивался и в дальнейшем уже проекты студии было предложено делать именно на нём.</p>
<p>К тому же, Symfony смог подать совершенно иной взгляд на создание приложений, архитектуру кода, помог познакомиться с новой ORM Propel (она больше чем Doctrine нравится). Ну и количество документации и всемирное коммьюнити не стоит упускать из положительных моментов.</p>
<p><strong>Как проходил процесс внедрения? Были ли подводные камни?</strong></p>
<p>Внедрение началось с разработки нескольких версий блогов.</p>
<p>Сначала появился простейший Блог, затем улучшенная версия корпоративного блога. Дальнейшим этапом был <a href="http://artsofte-lite.ru">Artosfte Lite</a>.</p>
<p>Система разрабатывалась с абсолютного нуля, поэтому мы не были ни чем ограничены и начали создавать все необходимые плагины, которые уже перешли на новые коммерческие проекты.</p>
<p>Главной проблемой являлся админ-генератор. Начинали мы с sf 1.1, а после Artsofte-Lite привязались к формпроцессору (отдельного бекенда там нет, поэтому админ-генератор просто не задействовали). Старая система обработки форм нас немного сковала.</p>
<p>Некоторые вещи, которые можно было сделать интерактивными, было тяжело реализовать. Не порадовало отсутствие поддержки деревьев как и Propel&#8217;ом, так и админ-генератором (последнее было бы весьма неплохо увидеть в дальнейших версиях).</p>
<p>Но, тем не менее, собран достаточный багаж плагинов, который причёсывается для перехода на sf1.2</p>
<p><strong><br />
Как быстро вливаются новые люди в разработку на фреймворке? Ведь часто говорят что на симфонии «тяжело начать».</strong> <strong>Как у вас справляются новички с этим?</strong></p>
<p>К сожалению говорят &#8220;тяжело начать&#8221; те, кто с фреймворками не работал вообще. С появлением еще нашего самописного студийного  фреймворка мировоззрение на код и разработку еще тогда сильно изменились. Небольшой этап &#8220;раскачивания&#8221; был при переходе , но в целом он был посвящён изучению структуры фреймворка. Всё остальное изучение - во время практики. Лучшего способа понять новый инструмент - нет. К счастью практических примеров Фабьен даёт немало и весьма неплохие - это редкость для большинства инструментов.</p>
<p>Новички с фреймворком справляются вполне неплохо. Симфони не имеет каких-то диких заморочек, поэтому реализация приложений на нём идёт достаточно просто. Это же всё тот же php. Если был багаж знаний по MVC ранее - всё идёт проще. Если не было - постепенно идёт обучение. Реализацию MVC ведь не нужно продумывать с нуля, просто нужно понять, что это такое и как это сделано в Symfony.<br />
Этот фреймворк очень лёгок в изучении.</p>
<p><strong>Есть ли такое чего в фреймворке вам не хватает?</strong></p>
<p>Куда еще большей расширяемости. Реализация некоторых вещей идёт немного не через то место.</p>
<p>Простой пример - для компонентов нет preExecute, нет фильтров (вообще немного удивились, когда копнули глубже и поняли, что компоненты и хелперы вызываются всегда при помощи хелпера). Не хватает возможности отдельно воспользоваться шаблонизатором, не привязывая ни к модулям, ни к компонентам. Такое бывает очень нужно, когда, например, создаётся task, который отсылает письма. А шаблоны писем хочется хранить иметь в виде шаблонов phpView.</p>
<p>Весьма не хватает в админ-генераторе простых средств вроде сортировки, возможности смены значений boolean полей прямо из списка (публикация, например). Ну и ещё раз про деревья - можно было ты заточить вывод под них. Без деревьев - никуда. Данные вещи приходится реализовывать самим.</p>
<p>Нам кажется такие вещи бы многим понравились.</p>
<p>Вообще не хватает определённого набора слушателей - их мало в самом ядре весьма. В итоге нет возможности создавать весьма удобные перехватчики, которые бы экономили силы и уменьшали количество кода.</p>
<p><strong><br />
Я так понимаю, теперь все проекты вы выполняете на Symfony?</strong></p>
<p>Да исключительно. Даже новые сервисы на старых проектах по возможности там где это реализуемо начинаем перетаскивать на симфонию, с прицелом на полный перевод при разработке новой версии\редизайна (мы обычно с клиентами дружим подолгу).</p>
<p><strong>Сколько проектов уже собрано на Symfony в вашей студии?</strong></p>
<p><strong></strong>На данный момент около 10.</p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/vvsx38HBYuY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2009/03/uspeshnyie-vnedreniya-symfony-studiya-artsofte/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2009/03/uspeshnyie-vnedreniya-symfony-studiya-artsofte/</feedburner:origLink></item>
		<item>
		<title>Jobeet.com.ua - работа для ИТ специалистов!</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/ok9ESoQL4JA/</link>
		<comments>http://symfony.org.ua/2009/01/jobeetcomua-rabota-dlya-it-spetsialistov/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 09:08:52 +0000</pubDate>
		<dc:creator>pilot</dc:creator>
		
		<category><![CDATA[Новости]]></category>

		<category><![CDATA[Jobeet]]></category>

		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=79</guid>
		<description><![CDATA[ Все кто знаком с php фреймворком symfony, думаю следили за проектом jobeet - платформы для публикации вакансий в течении 24 дней.
На сегодняшний момент нельзя посмотреть live версию проекта в интернете и я решил исправить эту ситуацию.
Рад представить все интресующимся и использующих в работе symfony, доработаную версию проекта jobeet до презентабельной версии, которую вы можете [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jobeet.com.ua"><img class="alignleft size-full wp-image-289" style="2px 5px;" src="http://451f.com.ua/img/2009/01/jobeet.gif" alt="jobeet.com.ua - работа для ИТ специалистов" width="249" height="93" /></a> Все кто знаком с php фреймворком <a href="http://symfony-project.org" target="_blank">symfony</a>, думаю следили за проектом <a href="http://jobeet.com.ua" target="_blank">jobeet</a> - платформы для публикации вакансий в течении 24 дней.</p>
<p>На сегодняшний момент нельзя посмотреть live версию проекта в интернете и я решил исправить эту ситуацию.</p>
<p>Рад представить все интресующимся и использующих в работе <a href="http://symfony-project.org" target="_blank">symfony</a>, доработаную версию проекта <em>jobeet</em> до презентабельной версии, которую вы можете поклацать на сайте <a href="http://jobeet.com.ua" target="_blank">jobeet.com.ua</a></p>
<p>В ближайшее время для всех желающих будет доступен <em>svn</em> проекта.<span id="more-79"></span></p>
<p>Чего коснулись доработки:</p>
<ul>
<li>Основная проблема - это <em>non-latin</em> кодировки, для которых нет коректной <em>ASCII</em> версии символов. Говоря простым языком, <em>jobeet</em> использует библиотеку <em>iconv</em> для транслитерации всех не латинских символов в <em>ASCII</em> и тут же наступает на габли, связаные с таким перекодированием.  Функция iconv возвращает на славянские символы - пустой результат, по-этому от транслитерации временно пришлось отказаться</li>
<li>Из первой проблемы вышла вторая - это поиск, который использует движок <em>Lucene</em>, через прокси фреймворка <em>Zend</em>. И тут ситуация повторяется, так как Lucene использует для создания индекса ASCII снова возникает проблема с non-latin кодировками и корректным из индексированием.<br />
Благо тут на помощь приходит то, что Zend позволяет использовать для индексирования кодировку UTF-8 (с определенныим ограничениями, о них можно прочесть в офф. документации <a href="http://framework.zend.com/manual/ru/" target="_blank">Zend Framework</a>). Вот собственно переход на utf-8 и был осуществленн для корректной индексации и поиска.</li>
<li>Добавлен русский перевод</li>
<li>Небольшой ряд мелких исправлений, я не буду на всех останавливаться, практически все исправления описаны в коментариях к коммитам в svn</li>
</ul>
<p>Все желающие разместить у себя на сайте список ИТ вакансий, в ближайшее время будет доступен API и примеры информеров.</p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/ok9ESoQL4JA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2009/01/jobeetcomua-rabota-dlya-it-spetsialistov/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2009/01/jobeetcomua-rabota-dlya-it-spetsialistov/</feedburner:origLink></item>
		<item>
		<title>Symfony: Propel предзагрузка объектов (preload objects)</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/DaCsj1YrKmY/</link>
		<comments>http://symfony.org.ua/2008/12/symfony-propel-preload-objects/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 14:36:05 +0000</pubDate>
		<dc:creator>tigor</dc:creator>
		
		<category><![CDATA[Propel]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=77</guid>
		<description><![CDATA[Цель: уменьшить количество запросов для таблиц использующих много внешних ключей.
Описание проблемы:  имеем 4 таблицы: news, news_i18n, news_type и news_type_i18n. На странице нужно отобразить список из 20 новостей, используя все перечисленные таблицы. А это 21 запрос. Методы doSelectWithI18n и doSelectJoinAll не позволяют получить значения i18n NewsTypePeer для NewsPeer с минимальным количеством запросов к БД.
Решение проблемы: [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Цель:</strong> уменьшить количество запросов для таблиц использующих много внешних ключей.</p>
<p><strong>Описание проблемы: </strong> имеем 4 таблицы: news, news_i18n, news_type и news_type_i18n. На странице нужно отобразить список из 20 новостей, используя все перечисленные таблицы. А это 21 запрос. Методы doSelectWithI18n и doSelectJoinAll не позволяют получить значения i18n NewsTypePeer для NewsPeer с минимальным количеством запросов к БД.</p>
<p><strong>Решение проблемы:</strong> вместо 21 запроса к БД выполнить 2. Механизм - использовать предзагрузку объектов NewsTypePeer со значениями i18n.</p>
<p><span id="more-77"></span></p>
<p><strong>Листинг 1:</strong> schema.yml</p>
<pre name="code" class="html">

propel:
_attributes:        { package: lib.model.news }

news_type:
_attributes:      { isI18N: true, i18nTable: news_type_i18n }
id:               ~
url_segment:      { type: varchar, size: 255, required: true }

news_type_i18n:
title:            { type: varchar, size: 255, required: true }

news:
_attributes:      { isI18N: true, i18nTable: news_i18n }
id:               ~
news_type_id:     { type: integer, default: 0, foreignTable: news_type, foreignReference: id }
url_segment:      { type: varchar, size: 255, required: true }
is_published:     { type: boolean, required: true, default: 0 }
published_at:     { type: timestamp, index: true }
image:            { type: varchar, size: 255, required: true }
video:            { type: varchar, size: 255, required: true }
created_at:       ~

news_i18n:
title:            { type: varchar, size: 255, required: true }
announce:         { type: varchar, size: 255, required: true }
body:             { type: longvarchar, required: true }
</pre>
<p><strong>Листинг 2:</strong> метод preloadObjects для объекта News</p>
<pre name="code" class="php">

&lt;?php

/**
*
* @author Igor Brovchenko webdev [at] tigor [dot] com [dot] ua
* @package    lib.model.news
*/
class NewsPeer extends BaseNewsPeer {

/**
* Preload Objects 1.0
*
* @param string $class
* @param array $objects
* @param boolean $isI18n
*/
static function preloadObjects($class, &amp;amp;amp;$objects, $isI18n = true)
{
if(!$objects)
{
return;
}

$peer      = $class . &#039;Peer&#039;;
$setMethod = &#039;set&#039; . $class;
$getMethod = &#039;get&#039; . $class;

if($isI18n)
{
$resultObjects = call_user_func(array($peer, &#039;doSelectWithI18n&#039;), new Criteria());
}
else
{
$resultObjects = call_user_func(array($peer, &#039;doSelect&#039;), new Criteria());
}

// array of primary keys
$pks = array();

// Remember primary key
foreach($resultObjects as $key =&gt; $value)
{
$pks[$value-&gt;getPrimaryKey()] = $key;
}

foreach($objects as &amp;amp;amp;$item)
{
$preloadObjectId = call_user_func(array($item, &#039;get&#039; . $class . &#039;Id&#039;));
call_user_func(array($item, $setMethod), $resultObjects[$pks[$preloadObjectId]] );
}

unset($resultObjects);
unset($pks);
}

} // NewsPeer
</pre>
<p><strong>Листинг 3:</strong> использование метода preloadObjects</p>
<pre name="code" class="php">

$c = new Criteria();
$c-&gt;add(NewsI18nPeer::CULTURE, &#039;ru&#039;);
$news = NewsPeer::doSelectWithI18n($c);

NewsPeer::preloadObjects(&#039;NewsType&#039;, $news, true);

foreach($news as $value)
{
print $value-&gt;getId() . &#039; - &#039; .$value-&gt;getTitle() . &#039; : &#039; . $value-&gt;getNewsType()-&gt;getTitle() . &quot;&lt;br&gt;&quot;;
}
</pre>
<p>Данный способ позволяет подгружать любые объекты с учетом локализации (i18n). В принципе ничего не мешает вынести этот метод из модели и использовать отдельно, например в хелпере. Один недостаток - это что выбираются все значения для объекта NewsType, т.е. если таблица маленькая, то проблем никаких нет. Можно сделать запрос, с условием выборки <strong>Criteria IN</strong> перечислив все getPrimaryKey.</p>
<p><strong>Используемые материалы:</strong><br />
• <a href="http://www.symfony-project.org/plugins/sfPropelActAsTaggableBehaviorPlugin">Symfony plugin sfPropelActAsTaggableBehaviorPlugin</a></p>
<p><strong>Источник:</strong> <a href="http://tigor.com.ua/blog/2008/11/27/symfony-propel-preload-objects/">Symfony: Propel предзагрузка объектов (preload objects)</a></p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/DaCsj1YrKmY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2008/12/symfony-propel-preload-objects/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2008/12/symfony-propel-preload-objects/</feedburner:origLink></item>
		<item>
		<title>Автоматическая аутентификация пользователя</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/zdtvde_OV9o/</link>
		<comments>http://symfony.org.ua/2008/11/avtomaticheskaya-autentifikatsiya-polzovatelya/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 02:40:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Общее]]></category>

		<category><![CDATA[sfGuard]]></category>

		<category><![CDATA[авторизация]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=75</guid>
		<description><![CDATA[sfGuard хороший плагин, но для того чтобы он мог авторизировать пользователя автоматически при заходе на страницу, нужно немного подшаманить.

1. Авторизация без формы
Если например, нужно авторизировать по ссылке. Тут все просто:


$this-&#62;getUser()-&#62;signin($user);


2. Авторизация в &#8220;секурных&#8221; модулях и экшенах.
Например, у нас админка вынесена в другое приложение и не хочется постоянно вводить логин и пароль то рецепт такой.
factories.yml


all:
storage:
class: sfSessionStorage
param:
session_cookie_lifetime: [...]]]></description>
			<content:encoded><![CDATA[<p>sfGuard хороший плагин, но для того чтобы он мог авторизировать пользователя автоматически при заходе на страницу, нужно немного подшаманить.</p>
<p><strong><br />
1. Авторизация без формы</strong></p>
<p>Если например, нужно авторизировать по ссылке. Тут все просто:</p>
<pre name="code" class="php">

$this-&gt;getUser()-&gt;signin($user);
</pre>
<p><strong><br />
2. Авторизация в &#8220;секурных&#8221; модулях и экшенах.</strong></p>
<p>Например, у нас админка вынесена в другое приложение и не хочется постоянно вводить логин и пароль то рецепт такой.<span id="more-75"></span></p>
<p>factories.yml</p>
<pre name="code" class="php">

all:
storage:
class: sfSessionStorage
param:
session_cookie_lifetime: 1296000  #на 15 дней.
</pre>
<p>filters.yml:</p>
<pre name="code" class="php">

security:
class: sfGuardBasicSecurityFilter
</pre>
<p><strong>3. Авторизация в &#8220;несекурных&#8221; модулях</strong></p>
<p>Например, у вас на фронтенде висит форма авторизации. чтобы не вводить данные постоянно нужно чтобы пользователь был аутентифицирован автоматически при заходе на страницу.</p>
<p>(метод подсмотрен <a href="http://shiny.ma3x.net/2008/07/02/a-successful-story-with-sfguardplugin-its-remember-me-function">здесь</a>)</p>
<p>Нам поможет sf_guard_remember_key. Для этого создалим такой фильт:р</p>
<pre name="code" class="php">

&lt;?
class RememberFilter extends sfFilter
{
public function execute ($filterChain)
{
if ($this-&gt;isFirstCall() AND !$this-&gt;getContext()-&gt;getUser()-&gt;isAuthenticated())
{
if ($cookie = $this-&gt;getContext()-&gt;getRequest()-&gt;getCookie(sfConfig::get(&#039;app_sf_guard_plugin_remember_cookie_name&#039;, &#039;sfRemember&#039;)))
{
$c=new Criteria();
$c-&gt;add(sfGuardRememberKeyPeer::REMEMBER_KEY, $cookie);
$remember_key=sfGuardRememberKeyPeer::doSelectOne($c);

if ($remember_key)
{
$user_id = $remember_key-&gt;getUserId();
$user = sfGuardUserPeer::retrieveByPK($user_id);
if ($user instanceof sfGuardUser)
{
$this-&gt;getContext()-&gt;getUser()-&gt;signIn($user);
}
}
}
}
$filterChain-&gt;execute();
}
}
?&gt;
</pre>
<p>и пропишем его в filters.yml</p>
<pre name="code" class="php">

remember:
class: RememberFilter
</pre>
<p>Теперь когда пользователь будет ставить галочку &#8220;запомнить меня&#8221; - он будет авторизироваться автоматически при следующих заходах.</p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/zdtvde_OV9o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2008/11/avtomaticheskaya-autentifikatsiya-polzovatelya/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2008/11/avtomaticheskaya-autentifikatsiya-polzovatelya/</feedburner:origLink></item>
		<item>
		<title>Propel Criteria Builder</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/ql9Ccn_qDWo/</link>
		<comments>http://symfony.org.ua/2008/11/propel-criteria-builder/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 18:56:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Общее]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=70</guid>
		<description><![CDATA[Много кто из ярых SQL-щиков не воспринимает конструктор запросов Propel и предпочитают пиcать ручной SQL. Много кто не понимает язык запросов  Prope-а и &#8220;думает&#8221; на  SQL.
Последним можно облегчить жизнь потому что есть такая штука как Propel Criteria Builder. 
Правда. мне самому вряд ли понадобиться такой сервис, потому как я уже &#8220;думаю&#8221; языком запросов Propel.
]]></description>
			<content:encoded><![CDATA[<p>Много кто из ярых SQL-щиков не воспринимает конструктор запросов <a href="http://propel.phpdb.org">Propel</a> и предпочитают пиcать ручной SQL. Много кто не понимает язык запросов  Prope-а и &#8220;думает&#8221; на  SQL.</p>
<p>Последним можно облегчить жизнь потому что есть такая штука как <a href="http://propel.jondh.me.uk/criteria">Propel Criteria Builder</a>. <span id="more-70"></span></p>
<p>Правда. мне самому вряд ли понадобиться такой сервис, потому как я уже &#8220;думаю&#8221; языком запросов Propel.</p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/ql9Ccn_qDWo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2008/11/propel-criteria-builder/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2008/11/propel-criteria-builder/</feedburner:origLink></item>
		<item>
		<title>Обновлен форум</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/a4IRV6SC-gU/</link>
		<comments>http://symfony.org.ua/2008/11/obnovlen-forum/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 11:19:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Общее]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=72</guid>
		<description><![CDATA[На symfony.org.ua обновлен форумный &#8220;движок&#8221; PunBB до версии 1.3
Стало намного красивее и удобнее.
Тема для обсуждения
]]></description>
			<content:encoded><![CDATA[<p>На symfony.org.ua обновлен форумный &#8220;движок&#8221; PunBB до версии 1.3</p>
<p>Стало намного красивее и удобнее.</p>
<p><a href="http://forum.symfony.org.ua/topic/368/novyi-forumnyi-dvizhok/">Тема для обсуждения</a></p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/a4IRV6SC-gU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2008/11/obnovlen-forum/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2008/11/obnovlen-forum/</feedburner:origLink></item>
		<item>
		<title>The first Ukrainian Symfony conference took place</title>
		<link>http://feedproxy.google.com/~r/symfonyorgua/~3/5ISwzpuAGA8/</link>
		<comments>http://symfony.org.ua/2008/10/the-first-ukrainian-symfony-conference-took-place/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 00:44:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://symfony.org.ua/?p=71</guid>
		<description><![CDATA[Past Saturday, 25 of October 2008, Symfony conference took place in Cherkassy, Ukraine. This was the first Ukrainian Symfony conference. 18 developers from 4 cities took participation in the conference. Participants came from:

Cherkassy
Kyiv (Ukrainian capital)
Kharkov (Ukrainian East Economic and Cultural Center)
Lvov (Ukrainian West Economic and Cultural Center)

Two speakers couldn’t attend the conference because of reasons [...]]]></description>
			<content:encoded><![CDATA[<p>Past Saturday, 25 of October 2008, Symfony conference took place in Cherkassy, Ukraine. This was the first Ukrainian Symfony conference. 18 developers from 4 cities took participation in the conference. Participants came from:<span id="more-71"></span></p>
<ul>
<li>Cherkassy</li>
<li>Kyiv (Ukrainian capital)</li>
<li>Kharkov (Ukrainian East Economic and Cultural Center)</li>
<li>Lvov (Ukrainian West Economic and Cultural Center)</li>
</ul>
<p>Two speakers couldn’t attend the conference because of reasons beyond the control. But this didn’t prevent us to make this event at good level (we keep it from common beer-bidge ?)</p>
<p>First, we were looking for more Symfony specialists, who are using the framework in everyday work as main tool. More conference participants were beginners in Symfony, or were only looking for best and powerful solution for web-development.</p>
<p>During the conference we’ve acquainted beginner “symfonians” with power of Symfony framework, have developed simple web-application at real time, have talked about Symfony 1.1 Forms with practice examples. Also we had possibility to discuss weak points of the framework and typical problems, which meet developers during web-application building process.</p>
<p>The meeting was finish with collective beer-drinking.</p>
<p><strong>Photos:</strong></p>
<p><a href="/wp-content/2008/10/img_9627.jpg"><img class="alignnone size-medium wp-image-53" title="img_9627" src="/wp-content/2008/10/img_9627-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="/wp-content/2008/10/img_9622.jpg"><img class="alignnone size-medium wp-image-54" title="img_9622" src="/wp-content/2008/10/img_9622-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="/wp-content/2008/10/img_9620.jpg"><img class="alignnone size-medium wp-image-55" title="img_9620" src="/wp-content/2008/10/img_9620-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="/wp-content/2008/10/img_9636.jpg"><img class="alignnone size-medium wp-image-56" title="img_9636" src="/wp-content/2008/10/img_9636-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="/wp-content/2008/10/img_9645.jpg"><img class="alignnone size-medium wp-image-57" title="img_9645" src="/wp-content/2008/10/img_9645-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p>Alex Vasilenko (Glad) - <a href="http://jelv.com/">Jelv</a></p>
<p><a href="/wp-content/2008/10/img_9646.jpg"><img class="alignnone size-medium wp-image-58" title="img_9646" src="/wp-content/2008/10/img_9646-266x400.jpg" alt="" width="266" height="400" /></a></p>
<p><a href="/wp-content/2008/10/img_9648.jpg"><img class="alignnone size-medium wp-image-59" title="img_9648" src="/wp-content/2008/10/img_9648-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p>Roman Movchan (Roman) - <a href="http://web-tseh.com.ua/">Bеб-цех</a></p>
<p><a href="/wp-content/2008/10/img_9651.jpg"><img class="alignnone size-medium wp-image-60" title="img_9651" src="/wp-content/2008/10/img_9651-266x400.jpg" alt="" width="266" height="400" /></a></p>
<p><a href="/wp-content/2008/10/img_9652.jpg"><img class="alignnone size-medium wp-image-61" title="img_9652" src="/wp-content/2008/10/img_9652-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="/wp-content/2008/10/img_9656.jpg"><img class="alignnone size-medium wp-image-62" title="img_9656" src="/wp-content/2008/10/img_9656-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p>Vladimir Dybenko - <a href="http://jelv.com/">Jelv</a></p>
<p><a href="/wp-content/2008/10/img_9642.jpg"><img class="alignnone size-medium wp-image-63" title="img_9642" src="/wp-content/2008/10/img_9642-266x400.jpg" alt="" width="266" height="400" /></a></p>
<p><a href="/wp-content/2008/10/img_9658.jpg"><img class="alignnone size-medium wp-image-64" title="img_9658" src="/wp-content/2008/10/img_9658-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p>Roma Shalabanow (Dreammaker)</p>
<p><a href="/wp-content/2008/10/img_9659.jpg"><img class="alignnone size-medium wp-image-65" title="img_9659" src="/wp-content/2008/10/img_9659-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="/wp-content/2008/10/img_9663.jpg"><img class="alignnone size-medium wp-image-66" title="img_9663" src="/wp-content/2008/10/img_9663-400x277.jpg" alt="" width="400" height="277" /></a></p>
<p><a href="../wp-content/2008/10/img_9677.jpg"><img class="alignnone size-medium wp-image-67" title="img_9677" src="../wp-content/2008/10/img_9677-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="../wp-content/2008/10/img_9694.jpg"><img class="alignnone size-medium wp-image-68" title="img_9694" src="../wp-content/2008/10/img_9694-400x266.jpg" alt="" width="400" height="266" /></a></p>
<p><a href="../wp-content/2008/10/img_9717.jpg"><img class="alignnone size-medium wp-image-69" title="img_9717" src="../wp-content/2008/10/img_9717-266x400.jpg" alt="" width="266" height="400" /></a></p>
<img src="http://feeds.feedburner.com/~r/symfonyorgua/~4/5ISwzpuAGA8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://symfony.org.ua/2008/10/the-first-ukrainian-symfony-conference-took-place/feed/</wfw:commentRss>
		<feedburner:origLink>http://symfony.org.ua/2008/10/the-first-ukrainian-symfony-conference-took-place/</feedburner:origLink></item>
	</channel>
</rss>
