<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zend Framework по-русски</title>
	<atom:link href="http://zend-framework.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://zend-framework.ru</link>
	<description>Статьи, руководства и заметки о фреймворке для PHP - Zend Framework</description>
	<lastBuildDate>Thu, 29 Apr 2010 08:13:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Вышел Zend Framework 1.10.4</title>
		<link>http://zend-framework.ru/zend-framework-1-10-4-released/</link>
		<comments>http://zend-framework.ru/zend-framework-1-10-4-released/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 08:13:22 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=216</guid>
		<description><![CDATA[Вчера, 28 апреля, был выпущен четвёртый релиз ветки 1.10 &#8211; ZF 1.10.4. Скачать его вы можете по ссылке:
http://framework.zend.com/download/latest
Релиз содержит исправления около 50 ошибок, большая часть которых исправлена на прошедшем две недели назад дне охоты на багов.
Некоторые исправления заслуживают отдельного упоминания:

ZF-7493:
Улучшение сериализации в Zend_Amf, что привело к ускорению сериализации больших наборов данных на 200-300%.

ZF-9263:
Устранён вывод warning&#8217;ов [...]]]></description>
			<content:encoded><![CDATA[<p>Вчера, 28 апреля, был выпущен четвёртый релиз ветки 1.10 &#8211; ZF 1.10.4. Скачать его вы можете по ссылке:<br />
<a href="http://framework.zend.com/download/latest">http://framework.zend.com/download/latest</a><br />
Релиз содержит исправления около 50 ошибок, большая часть которых исправлена на прошедшем две недели назад <a href="http://devzone.zend.com/article/12064-Results-of-Aprils-ZF-Bug-Hunt-Days">дне охоты на багов</a>.<br />
Некоторые исправления заслуживают отдельного упоминания:</p>
<ul>
<li><a href="http://framework.zend.com/issues/browse/ZF-7493">ZF-7493</a>:<br />
Улучшение сериализации в Zend_Amf, что привело к ускорению сериализации больших наборов данных на 200-300%.
</li>
<li><a href="http://framework.zend.com/issues/browse/ZF-9263">ZF-9263</a>:<br />
Устранён вывод warning&#8217;ов при вызове Zend_Loader::isReadable() на WAMP-платформе
</li>
<li><a href="http://framework.zend.com/issues/browse/ZF-9504">ZF-9504</a>:<br />
Генерация кода при помощи Zend_XmlRpc_Value стала более эффективной на больших наборах данных.<br />
В одном из примеров использование памяти снизилось с 1GB до 20MB с уменьшением скорости выполнения с 60 секунд до 10.
</li>
</ul>
<p><a href="http://framework.zend.com/changelog/1.10.4">Полный список изменений</a><br />
<a href="http://devzone.zend.com/article/12078-Zend-Framework-1.10.4-Released">Оригинал новости</a></p>
<hr />
<p><small>
<a href="http://zend-framework.ru/zend-framework-1-10-4-released/#comments">No comment</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/zend-framework-1-10-4-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Начало работы с Zend Framework</title>
		<link>http://zend-framework.ru/getting-started/</link>
		<comments>http://zend-framework.ru/getting-started/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 13:53:53 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[MVC-компоненты]]></category>
		<category><![CDATA[Базы данных]]></category>
		<category><![CDATA[Руководства]]></category>
		<category><![CDATA[Формы и обработка входных данных]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Zend_Controller]]></category>
		<category><![CDATA[Zend_Db]]></category>
		<category><![CDATA[Zend_Db_Table]]></category>
		<category><![CDATA[Zend_Form]]></category>
		<category><![CDATA[Zend_Layout]]></category>
		<category><![CDATA[Zend_View]]></category>
		<category><![CDATA[основы]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=199</guid>
		<description><![CDATA[Автор: Rob Allen, www.akrabat.com
Также доступна устаревшая версия руководства, ориентированная на старые версии Zend Framework.
Это руководство предназначено для введения в использование Zend Framework для создания простых приложений с использованием БД с использованием парадигмы Model-View-Controller. Оно было переписано для версии фреймворка 1.8 и использует все преимущества скриптов командной строки Zend_Tool и Zend_Application для бутстраппинга. Используются другие компоненты, [...]]]></description>
			<content:encoded><![CDATA[<p>Автор: Rob Allen, <a href="http://www.akrabat.com">www.akrabat.com</a><br />
Также доступна <a href="/nachalo-raboty-s-zend-framework/">устаревшая версия руководства</a>, ориентированная на старые версии Zend Framework.</p>
<p>Это руководство предназначено для введения в использование Zend Framework для создания простых приложений с использованием БД с использованием парадигмы <a href="http://ru.wikipedia.org/wiki/MVC">Model-View-Controller</a>. Оно было переписано для версии фреймворка 1.8 и использует все преимущества скриптов командной строки Zend_Tool и Zend_Application для бутстраппинга. Используются другие компоненты, включая Zend_Controller, Zend_View, Zend_Db_Table и Zend_Form.<br />
(...)<br/>Продолжить чтение - <a href="http://zend-framework.ru/getting-started/">Начало работы с Zend Framework</a> (2,617 words)</p>
<hr />
<p><small>
<a href="http://zend-framework.ru/getting-started/#comments">104 comments</a>
<br/>
Post tags: <a href="http://zend-framework.ru/tag/mod_rewrite/" rel="tag">mod_rewrite</a>, <a href="http://zend-framework.ru/tag/zend_controller/" rel="tag">Zend_Controller</a>, <a href="http://zend-framework.ru/tag/zend_db/" rel="tag">Zend_Db</a>, <a href="http://zend-framework.ru/tag/zend_db_table/" rel="tag">Zend_Db_Table</a>, <a href="http://zend-framework.ru/tag/zend_form/" rel="tag">Zend_Form</a>, <a href="http://zend-framework.ru/tag/zend_layout/" rel="tag">Zend_Layout</a>, <a href="http://zend-framework.ru/tag/zend_view/" rel="tag">Zend_View</a>, <a href="http://zend-framework.ru/tag/osnovy/" rel="tag">основы</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/getting-started/feed/</wfw:commentRss>
		<slash:comments>104</slash:comments>
		</item>
		<item>
		<title>Вышел Zend Framework 1.10.2</title>
		<link>http://zend-framework.ru/zend-framework-1-10-2-released/</link>
		<comments>http://zend-framework.ru/zend-framework-1-10-2-released/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 09:07:45 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=197</guid>
		<description><![CDATA[Релиз содержит более 50 багфиксов, во многом благодаря прошедшим Дням Охоты на Баги (Bug Hunting Days).
Скачать


No comment

Post tags: 
]]></description>
			<content:encoded><![CDATA[<p>Релиз содержит более 50 багфиксов, во многом благодаря прошедшим Дням Охоты на Баги (Bug Hunting Days).<br />
<a href="http://framework.zend.com/download/latest">Скачать</a></p>
<hr />
<p><small>
<a href="http://zend-framework.ru/zend-framework-1-10-2-released/#comments">No comment</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/zend-framework-1-10-2-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Zend Framework 1.10.1</title>
		<link>http://zend-framework.ru/zend-framework-1-10-1-release/</link>
		<comments>http://zend-framework.ru/zend-framework-1-10-1-release/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 22:38:04 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=194</guid>
		<description><![CDATA[Сегодня команда разработчиков Zend Framework выпустила новую версию &#8211; 1.10.1. Исправлено более 50 багов, обнаруженных с момента выпуска версии 1.10.0.
Список исправлений
Скачать Zend Framework 1.10.1
Оффициальный анонс новой версии
Также в руководстве по Zend Framework появилась возможность комментирования, что очень полезно &#8211; в документации описаны далеко не все тонкости. Надеюсь, комментарии устранят этот недостаток.


No comment

Post tags: 
]]></description>
			<content:encoded><![CDATA[<p>Сегодня команда разработчиков Zend Framework выпустила новую версию &#8211; 1.10.1. Исправлено более 50 багов, обнаруженных с момента выпуска версии 1.10.0.<br />
<a href="http://framework.zend.com/changelog">Список исправлений</a><br />
<a href="http://framework.zend.com/download/latest">Скачать Zend Framework 1.10.1</a><br />
<a href="http://devzone.zend.com/article/11822-Zend-Framework-1.10.1-Released">Оффициальный анонс новой версии</a></p>
<p>Также в <a href="http://framework.zend.com/manual/en/">руководстве по Zend Framework</a> появилась возможность комментирования, что очень полезно &#8211; в документации описаны далеко не все тонкости. Надеюсь, комментарии устранят этот недостаток.</p>
<hr />
<p><small>
<a href="http://zend-framework.ru/zend-framework-1-10-1-release/#comments">No comment</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/zend-framework-1-10-1-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Первая в России конференция по Zend Framework</title>
		<link>http://zend-framework.ru/zf-conf/</link>
		<comments>http://zend-framework.ru/zf-conf/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 10:33:42 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[zfconf]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=190</guid>
		<description><![CDATA[Всем привет.
Активисты русскоязычного сообщества ZF организуют первую в России конференцию. Судя по списку тем, мероприятие обещает быть интересным. Доступна предварительная регистрация.
Организаторы обещают, что мероприятие будет бесплатным или почти бесплатным.
Место проведения: Санкт-Петербург.
За последними новостями можно следить здесь:
RSS-канал: feeds.feedburner.com/zfconf
Twitter: @zfconf
Группа Вконтакте: vkontakte.ru/club14951507


No comment

Post tags: zfconf
]]></description>
			<content:encoded><![CDATA[<p>Всем привет.<br />
Активисты русскоязычного сообщества ZF организуют первую в России конференцию. Судя по <a href="http://www.zfconf.ru/">списку тем</a>, мероприятие обещает быть интересным. Доступна <a href="http://www.zfconf.ru/pre-registration.php">предварительная регистрация</a>.<br />
Организаторы обещают, что мероприятие будет бесплатным или почти бесплатным.<br />
Место проведения: Санкт-Петербург.</p>
<p>За последними новостями можно следить здесь:<br />
RSS-канал: <a href="http://feeds.feedburner.com/zfconf">feeds.feedburner.com/zfconf</a><br />
Twitter: <a href="http://twitter.com/zfconf">@zfconf</a><br />
Группа Вконтакте: <a href="http://vkontakte.ru/club14951507">vkontakte.ru/club14951507</a></p>
<hr />
<p><small>
<a href="http://zend-framework.ru/zf-conf/#comments">No comment</a>
<br/>
Post tags: <a href="http://zend-framework.ru/tag/zfconf/" rel="tag">zfconf</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/zf-conf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновление безопасности Zend Framework</title>
		<link>http://zend-framework.ru/security-updates/</link>
		<comments>http://zend-framework.ru/security-updates/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 20:04:59 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[reCAPTHCA]]></category>
		<category><![CDATA[Zend_Dojo]]></category>
		<category><![CDATA[Zend_Filter]]></category>
		<category><![CDATA[Zend_Form]]></category>
		<category><![CDATA[Zend_Json]]></category>
		<category><![CDATA[Zend_Log]]></category>
		<category><![CDATA[Zend_View]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=185</guid>
		<description><![CDATA[11 января вышли новые версии сразу трёх веток Zend Framework: 1.9.7, 1.8.5 и 1.7.9.
Эти релизы содержат более 40 багфиксов и включают в себя уведомление о новой политике безопасности Zend Framework.
На протяжении декабря Padraic Brady проводил аудит безопасности фреймворка и работал совместно с разработчиками ZF над устранением проблем.
Устранены следующие уязвимости:

Потенциальная инъекция MIME-type в Zend_File_Transfer
В случае, если [...]]]></description>
			<content:encoded><![CDATA[<p>11 января вышли новые версии сразу трёх веток Zend Framework: 1.9.7, 1.8.5 и 1.7.9.<br />
Эти релизы содержат более 40 багфиксов и включают в себя уведомление о <a href="http://framework.zend.com/security">новой политике безопасности Zend Framework</a>.<br />
На протяжении декабря <a href="http://blog.astrumfutura.com/">Padraic Brady</a> проводил аудит безопасности фреймворка и работал совместно с разработчиками ZF над устранением проблем.<br />
Устранены следующие уязвимости:</p>
<dl>
<dt><a href="http://framework.zend.com/security/advisory/ZF2010-04">Потенциальная инъекция MIME-type в Zend_File_Transfer</a></dt>
<dd>В случае, если не установлено расширение ext/finfo и недоступна функция mime_content_type() использовался MIME-type, хранящийся в массиве $_FILES. Это небезопасно, т.к. злоумышленник может подделать значение. Теперь в случае, если не удаётся корректно определить MIME-type, передаётся значение &#8220;application/octet&#8221;</dd>
<dt><a href="http://framework.zend.com/security/advisory/ZF2010-06">Потенциальная XSS/HTML инъекция в Zend_Json</a></dt>
<dd>Zend_Json_Encode не экранировал символ слэша (&#8220;/&#8221;), что противоречит спецификации JSON и открывает возможность для инъекции XSS или HTML. В новых версиях проблема устранена, символ экранируется.</dd>
<dt><a href="http://framework.zend.com/security/advisory/ZF2010-05">Потенциальная XSS-уязвимость в компоненте Zend_Service_ReCaptcha_MailHide</a></dt>
<dd>Zend_Service_ReCaptcha_MailHide не проделывал валидацию переданного e-mail&#8217;а, а при вызове htmletities() не указывалась текущая кодировка, злоумыленник мог передать специально сформированную строку.</dd>
<dt><a href="http://framework.zend.com/security/advisory/ZF2010-02">Потенциальная XSS-уязвимость в Zend_Dojo_View_Helper_Editor</a></dt>
<dd>Zend_Dojo_View_Helper_Editor использовал TEXTAREA вместо DIV&#8217;а. Команда разработчиков Dojo сообщила, что тектовый редактор на базе TEXTAREA не обеспечивает должный уровень безопасности.</dd>
<dt><a href="http://framework.zend.com/security/advisory/ZF2010-01">Потенциальный XSS из-за несовместимости кодировок</a></dt>
<dd>Множество классов ZF, в том числе Zend_Form, Zend_Filter, Zend_Form, Zend_Log и Zend_View, вызывали htmlentities() и htmlspecialchars() с неуказанными или жёстко прописанными кодировками. При использовании нетипичных кодировок (например, UTF-7) кодировка может определиться некорректно и открыть возможность злоумышленнику передать XSS-эксплойт. Рекомендуется в каждом из этих компонентов задавать кодировку явно, не надеясь на автоопределение.</dd>
</dl>
<p>Рекомендуется обновить свои приложения для устранения вышеперечисленных проблем.</p>
<p>О не связанных с безопасностью изменениях вы можете узнать по ссылкам:<br />
<a href="http://framework.zend.com/changelog/1.9.7">http://framework.zend.com/changelog/1.9.7</a><br />
<a href="http://framework.zend.com/changelog/1.8.5">http://framework.zend.com/changelog/1.8.5</a><br />
<a href="http://framework.zend.com/changelog/1.7.9">http://framework.zend.com/changelog/1.7.9</a></p>
<p>Это последний запланированный релиз ветки 1.9. До конца этого месяца планируется выпустить версию 1.10.0</p>
<p>Подробнее о релизе:<br />
<a href="http://devzone.zend.com/article/11622-Zend-Framework-1.9.7-1.8.5-and-1.7.9-Released">В Zend DevZone от Matthew Weier O&#8217;Phinney</a><br />
<a href="http://blog.astrumfutura.com/archives/432-Zend-Framework-Security-Related-Releases-Now-Available.html">На blog.astrumfutura.com от Padraic Brady</a></p>
<hr />
<p><small>
<a href="http://zend-framework.ru/security-updates/#comments">No comment</a>
<br/>
Post tags: <a href="http://zend-framework.ru/tag/recapthca/" rel="tag">reCAPTHCA</a>, <a href="http://zend-framework.ru/tag/zend_dojo/" rel="tag">Zend_Dojo</a>, <a href="http://zend-framework.ru/tag/zend_filter/" rel="tag">Zend_Filter</a>, <a href="http://zend-framework.ru/tag/zend_form/" rel="tag">Zend_Form</a>, <a href="http://zend-framework.ru/tag/zend_json/" rel="tag">Zend_Json</a>, <a href="http://zend-framework.ru/tag/zend_log/" rel="tag">Zend_Log</a>, <a href="http://zend-framework.ru/tag/zend_view/" rel="tag">Zend_View</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/security-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Создание API сервисов при помощи Zend Framework</title>
		<link>http://zend-framework.ru/service-api/</link>
		<comments>http://zend-framework.ru/service-api/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 05:10:38 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Прочее]]></category>
		<category><![CDATA[Руководства]]></category>
		<category><![CDATA[Ссылки]]></category>
		<category><![CDATA[AMF]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[JSON-RPC]]></category>
		<category><![CDATA[service API]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=182</guid>
		<description><![CDATA[Matthew Weier O&#8217;Phinney опубликовал краткое руководство по созданию SOAP, XML-RPC, JSON-RPC или AMF API на базе Zend Framework.
Я знал, что через ZF это сделать просто, но, оказалось, даже проще, чем я думал. Например, вот так выглядит создание XML-RPC-сервера:
123$server = new Zend_XmlRpc_Server&#40;&#41;;
$server-&#62;setClass&#40;'My_Awesome_Api'&#41;;
echo $server-&#62;handle&#40;&#41;;
Также не следует использовать для этих целей полноценный MVC — просто незачем проходить полный [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://weierophinney.net/matthew/">Matthew Weier O&#8217;Phinney</a> опубликовал <a href="http://weierophinney.net/matthew/archives/227-Exposing-Service-APIs-via-Zend-Framework.html">краткое руководство по созданию SOAP, XML-RPC, JSON-RPC или AMF API на базе Zend Framework</a>.<br />
Я знал, что через ZF это сделать просто, но, оказалось, даже проще, чем я думал. Например, вот так выглядит создание XML-RPC-сервера:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="re0">$server</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_XmlRpc_Server<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$server</span><span class="sy0">-&gt;</span><span class="me1">setClass</span><span class="br0">&#40;</span><span class="st_h">'My_Awesome_Api'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$server</span><span class="sy0">-&gt;</span><span class="me1">handle</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Также не следует использовать для этих целей полноценный MVC — просто незачем проходить полный цикл диспатчеризации, если можно заменить его куда более производительным сервис-сервером:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw2">class</span> XmlRpc_Bootstrap <span class="kw2">extends</span> Bootstrap<br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$server</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_XmlRpc_Server<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$server</span><span class="sy0">-&gt;</span><span class="me1">setClass</span><span class="br0">&#40;</span><span class="st_h">'My_Awesome_Api'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$server</span><span class="sy0">-&gt;</span><span class="me1">handle</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<br />
<span class="re0">$app</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Application<span class="br0">&#40;</span><br />
&nbsp; &nbsp; APPLICATION_ENV<span class="sy0">,</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">'bootstrap'</span> <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">'class'</span> <span class="sy0">=&gt;</span> <span class="st_h">'XmlRpc_Bootstrap'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">'path'</span> &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'path/to/Bootstrap.php'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">'config'</span> <span class="sy0">=&gt;</span> APPLICATION_PATH <span class="sy0">.</span> <span class="st_h">'/configs/application.ini'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">,</span><br />
<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$app</span><span class="sy0">-&gt;</span><span class="me1">bootstrap</span><span class="br0">&#40;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="sy0">-&gt;</span><span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
<p>Подробности читайте в <a href="http://weierophinney.net/matthew/archives/227-Exposing-Service-APIs-via-Zend-Framework.html">оригинале статьи</a>.</p>
<hr />
<p><small>
<a href="http://zend-framework.ru/service-api/#comments">4 comments</a>
<br/>
Post tags: <a href="http://zend-framework.ru/tag/amf/" rel="tag">AMF</a>, <a href="http://zend-framework.ru/tag/bootstrap/" rel="tag">bootstrap</a>, <a href="http://zend-framework.ru/tag/json-rpc/" rel="tag">JSON-RPC</a>, <a href="http://zend-framework.ru/tag/service-api/" rel="tag">service API</a>, <a href="http://zend-framework.ru/tag/soap/" rel="tag">SOAP</a>, <a href="http://zend-framework.ru/tag/xml-rpc/" rel="tag">XML-RPC</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/service-api/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Google и Zend_OpenID</title>
		<link>http://zend-framework.ru/google-zend_openid/</link>
		<comments>http://zend-framework.ru/google-zend_openid/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 19:32:24 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Авторизация и аутентификация]]></category>
		<category><![CDATA[Руководства]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=179</guid>
		<description><![CDATA[Ни для кого не секрет, что Zend_OpenID не всегда работает так, как хотелось бы.
Сегодня я столкнулся с тем, что этот компонент не принимал ответ от openID-сервера google, выдавая ошибку &#8220;Discovery failed&#8221;. После изучения исходных кодов я выяснил, что необходимый для корректной валидации код просто отсутствует в компоненте. Пришлось воспользоваться грязным хаком (источник):


В метод Zend_OpenId_Consumer::_discovery(), в [...]]]></description>
			<content:encoded><![CDATA[<p>Ни для кого не секрет, что Zend_OpenID не всегда работает так, как хотелось бы.<br />
Сегодня я столкнулся с тем, что этот компонент не принимал ответ от openID-сервера google, выдавая ошибку &#8220;Discovery failed&#8221;. После изучения исходных кодов я выяснил, что необходимый для корректной валидации код просто отсутствует в компоненте. Пришлось воспользоваться грязным хаком (<a href="http://framework.zend.com/issues/browse/ZF-6905">источник</a>):</p>
<ol>
<li>
В метод Zend_OpenId_Consumer::_discovery(), в серию условий if preg_match (начало около строки 740), надо добавить следующий блок:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="br0">&#125;</span> <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st_h">'/&lt;URI&gt;([^&lt;]+)&lt;\/URI&gt;/i'</span><span class="sy0">,</span> <span class="re0">$response</span><span class="sy0">,</span> <span class="re0">$r</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$version</span> <span class="sy0">=</span> <span class="nu19">2.0</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$server</span> <span class="sy0">=</span> <span class="re0">$r</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span></div></td></tr></tbody></table></div>
</li>
<li>
Класс тот же, метод _checkId(). В блок if ($version <= 2.0), в if ($this->_session !== null) надо добавить:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$server</span> <span class="sy0">==</span> <span class="st_h">'https://www.google.com/accounts/o8/ud'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_session<span class="sy0">-&gt;</span><span class="me1">identity</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_session<span class="sy0">-&gt;</span><span class="me1">claimed_id</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
</li>
<li>
Там же, следующая ветка &#8211; else if (defined(&#8216;SID&#8217;)):</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$server</span> <span class="sy0">==</span> <span class="st_h">'https://www.google.com/accounts/o8/ud'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st_h">'zend_openid'</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">'identity'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$_SESSION</span><span class="br0">&#91;</span><span class="st_h">'zend_openid'</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st_h">'claimed_id'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
</li>
<li>
Там же, вне if/else if/else ветки, но внутри $version <= 2.0:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$server</span> <span class="sy0">==</span> <span class="st_h">'https://www.google.com/accounts/o8/ud'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="re0">$params</span><span class="br0">&#91;</span><span class="st_h">'openid.identity'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
&nbsp; <span class="re0">$params</span><span class="br0">&#91;</span><span class="st_h">'openid.claimed_id'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="st_h">'http://specs.openid.net/auth/2.0/identifier_select'</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
</li>
</ol>
<p>Конечно, это некрасивое решение, но оно приемлемо до тех пор, пока этот баг не будет закрыт.</p>
<hr />
<p><small>
<a href="http://zend-framework.ru/google-zend_openid/#comments">3 comments</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/google-zend_openid/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Передача параметров запроса в действия контроллеров</title>
		<link>http://zend-framework.ru/mapping-request-parameters/</link>
		<comments>http://zend-framework.ru/mapping-request-parameters/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 19:47:24 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[MVC-компоненты]]></category>
		<category><![CDATA[Библиотеки для ZF]]></category>
		<category><![CDATA[Руководства]]></category>
		<category><![CDATA[Zend_Controller]]></category>
		<category><![CDATA[Zend_Controller_Router]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=176</guid>
		<description><![CDATA[Недавно на сайте http://fbdevzone.com/ был рассмотрен удобный способ передачи URL-параметров в действия.
Обычно для этой цели используются методы $this->_getParam() и $this->getRequest()->getParam() в классах контроллера. Это довольно удобный способ, однако он не идеален — прописывать это из метода в метод не очень удобно.
Предложенный способ заключается в том, что параметры передаются в действия в виде аргументов метода:
12345678910111213141516171819/**
&#160;* index/info/
&#160;* [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно на сайте <a href="http://fbdevzone.com/">http://fbdevzone.com/</a> был рассмотрен <a href="http://fbdevzone.com/2009/10/request-parameter-mapping/">удобный способ передачи URL-параметров в действия</a>.<br />
Обычно для этой цели используются методы $this->_getParam() и $this->getRequest()->getParam() в классах контроллера. Это довольно удобный способ, однако он не идеален — прописывать это из метода в метод не очень удобно.<br />
Предложенный способ заключается в том, что параметры передаются в действия в виде аргументов метода:</p>
<div class="codecolorer-container php " style="overflow:auto;white-space:nowrap;"><table cellspacing="0" cellpadding="0"><tbody><tr><td class="line-numbers"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="php codecolorer" style="font-family:Monaco,Lucida Console,monospace"><span class="co4">/**<br />
&nbsp;* index/info/<br />
&nbsp;* index/info/tags/one/tags/two<br />
&nbsp;* index/info/msg/msg-only<br />
&nbsp;* index/info/date/2009-10-03<br />
&nbsp;* index/info/msg/RandomOrder/date/2009-10-03<br />
&nbsp;*<br />
&nbsp;* @param array $tags<br />
&nbsp;* @param Zend_Date $date<br />
&nbsp;* @param string $msg<br />
&nbsp;*/</span><br />
<span class="kw2">public</span> <span class="kw2">function</span> infoAction<span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a> <span class="re0">$tags</span> <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">,</span> Zend_Date <span class="re0">$date</span> <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">,</span> <span class="re0">$msg</span> <span class="sy0">=</span> <span class="st_h">'hello'</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; Zend_Debug<span class="sy0">::</span><span class="me2">dump</span><span class="br0">&#40;</span><span class="re0">$tags</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$date</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$date</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span>Zend_Date<span class="sy0">::</span><span class="me2">DATETIME_FULL</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">else</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;no date passed<span class="es1">\n</span>&quot;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; Zend_Debug<span class="sy0">::</span><span class="me2">dump</span><span class="br0">&#40;</span><span class="re0">$msg</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div></td></tr></tbody></table></div>
<p>При помощи Zend_Reflection производится парсинг phpdoc-комментариев, присваивая переменным соответствующие типы.<br />
Подробнее читайте <a href="http://fbdevzone.com/2009/10/request-parameter-mapping/">в блоге автора</a>. Там же вы найдёте исходный код класса.</p>
<hr />
<p><small>
<a href="http://zend-framework.ru/mapping-request-parameters/#comments">6 comments</a>
<br/>
Post tags: <a href="http://zend-framework.ru/tag/zend_controller/" rel="tag">Zend_Controller</a>, <a href="http://zend-framework.ru/tag/zend_controller_router/" rel="tag">Zend_Controller_Router</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/mapping-request-parameters/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.9.4</title>
		<link>http://zend-framework.ru/zend-framework-1-9-4/</link>
		<comments>http://zend-framework.ru/zend-framework-1-9-4/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 18:03:10 +0000</pubDate>
		<dc:creator>Сергей Митрошин</dc:creator>
				<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://zend-framework.ru/?p=174</guid>
		<description><![CDATA[Здравствуйте.
Сегодня увидела свет новая версия Zend Framework. Ничего особенного, просто правка багов.
Список закрытых вопросов


No comment

Post tags: 
]]></description>
			<content:encoded><![CDATA[<p>Здравствуйте.<br />
Сегодня увидела свет новая версия Zend Framework. Ничего особенного, просто правка багов.<br />
<a href="http://framework.zend.com/changelog/1.9.4">Список закрытых вопросов</a></p>
<hr />
<p><small>
<a href="http://zend-framework.ru/zend-framework-1-9-4/#comments">No comment</a>
<br/>
Post tags: <br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://zend-framework.ru/zend-framework-1-9-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
