Всем привет.
Сегодня была выпущена в свет очередная версия ZF: 1.10.7. Релиз содержит около 60 исправлений.
Скачать
Changelog
О главном всё. А теперь немного информации по теме.
Во-первых, Если вы используете Zend_Service_Twitter, обновитесь до версии ZF 1.10.6 или 1.10.7 – твиттер переходит на использование OAuth, а разработчики ZF готовят пользователей к этому. Подробнее читайте в статье Twitter OAuthcalypse. Если вы не можете обновиться, можете изучитьещё три способа интегрировать Zend_OAuth и Twitter.
Также мы узнали, что на конец сентября запланирован релиз ZF 1.11.0, который стандартизирует переводы валидаторов и ещё делает много хорошего для нас с вами.
И, напоследок, немного новостей о ZF 2.0. Уже реализована миграция на PHP 5.3 namespaces, удалены все require_once и проведён рефакторинг юнит-тестов. Ждать остаётся недолго 
Всего доброго, будем ждать новых известий от разработчиков ZF.
Оригинал новости на DevZone
Posted by Сергей Митрошин on 30 июля 2010 at 23:32 under Новости.
5 Comments.
Вчера, 28 апреля, был выпущен четвёртый релиз ветки 1.10 – ZF 1.10.4. Скачать его вы можете по ссылке:
http://framework.zend.com/download/latest
Релиз содержит исправления около 50 ошибок, большая часть которых исправлена на прошедшем две недели назад дне охоты на багов.
Некоторые исправления заслуживают отдельного упоминания:
- ZF-7493:
Улучшение сериализации в Zend_Amf, что привело к ускорению сериализации больших наборов данных на 200-300%.
- ZF-9263:
Устранён вывод warning’ов при вызове Zend_Loader::isReadable() на WAMP-платформе
- ZF-9504:
Генерация кода при помощи Zend_XmlRpc_Value стала более эффективной на больших наборах данных.
В одном из примеров использование памяти снизилось с 1GB до 20MB с уменьшением скорости выполнения с 60 секунд до 10.
Полный список изменений
Оригинал новости
Posted by Сергей Митрошин on 29 апреля 2010 at 11:13 under Новости.
Comment on this post.
Автор: Rob Allen, www.akrabat.com
Также доступна устаревшая версия руководства, ориентированная на старые версии Zend Framework.
Это руководство предназначено для введения в использование Zend Framework для создания простых приложений с использованием БД с использованием парадигмы Model-View-Controller. Оно было переписано для версии фреймворка 1.8 и использует все преимущества скриптов командной строки Zend_Tool и Zend_Application для бутстраппинга. Используются другие компоненты, включая Zend_Controller, Zend_View, Zend_Db_Table и Zend_Form.
Continue reading ‘Начало работы с Zend Framework’ »
Posted by Сергей Митрошин on 31 марта 2010 at 16:53 under MVC-компоненты, Базы данных, Руководства, Формы и обработка входных данных.
Tags: mod_rewrite, Zend_Controller, Zend_Db, Zend_Db_Table, Zend_Form, Zend_Layout, Zend_View, основы
135 Comments.
Релиз содержит более 50 багфиксов, во многом благодаря прошедшим Дням Охоты на Баги (Bug Hunting Days).
Скачать
Posted by Сергей Митрошин on 25 февраля 2010 at 12:07 under Новости.
Comment on this post.
Сегодня команда разработчиков Zend Framework выпустила новую версию – 1.10.1. Исправлено более 50 багов, обнаруженных с момента выпуска версии 1.10.0.
Список исправлений
Скачать Zend Framework 1.10.1
Оффициальный анонс новой версии
Также в руководстве по Zend Framework появилась возможность комментирования, что очень полезно – в документации описаны далеко не все тонкости. Надеюсь, комментарии устранят этот недостаток.
Posted by Сергей Митрошин on 11 февраля 2010 at 1:38 under Новости.
Comment on this post.
Всем привет.
Активисты русскоязычного сообщества ZF организуют первую в России конференцию. Судя по списку тем, мероприятие обещает быть интересным. Доступна предварительная регистрация.
Организаторы обещают, что мероприятие будет бесплатным или почти бесплатным.
Место проведения: Санкт-Петербург.
За последними новостями можно следить здесь:
RSS-канал: feeds.feedburner.com/zfconf
Twitter: @zfconf
Группа Вконтакте: vkontakte.ru/club14951507
Posted by Сергей Митрошин on 2 февраля 2010 at 13:33 under Новости.
Tags: zfconf
Comment on this post.
11 января вышли новые версии сразу трёх веток Zend Framework: 1.9.7, 1.8.5 и 1.7.9.
Эти релизы содержат более 40 багфиксов и включают в себя уведомление о новой политике безопасности Zend Framework.
На протяжении декабря Padraic Brady проводил аудит безопасности фреймворка и работал совместно с разработчиками ZF над устранением проблем.
Устранены следующие уязвимости:
- Потенциальная инъекция MIME-type в Zend_File_Transfer
- В случае, если не установлено расширение ext/finfo и недоступна функция mime_content_type() использовался MIME-type, хранящийся в массиве $_FILES. Это небезопасно, т.к. злоумышленник может подделать значение. Теперь в случае, если не удаётся корректно определить MIME-type, передаётся значение “application/octet”
- Потенциальная XSS/HTML инъекция в Zend_Json
- Zend_Json_Encode не экранировал символ слэша (“/”), что противоречит спецификации JSON и открывает возможность для инъекции XSS или HTML. В новых версиях проблема устранена, символ экранируется.
- Потенциальная XSS-уязвимость в компоненте Zend_Service_ReCaptcha_MailHide
- Zend_Service_ReCaptcha_MailHide не проделывал валидацию переданного e-mail’а, а при вызове htmletities() не указывалась текущая кодировка, злоумыленник мог передать специально сформированную строку.
- Потенциальная XSS-уязвимость в Zend_Dojo_View_Helper_Editor
- Zend_Dojo_View_Helper_Editor использовал TEXTAREA вместо DIV’а. Команда разработчиков Dojo сообщила, что тектовый редактор на базе TEXTAREA не обеспечивает должный уровень безопасности.
- Потенциальный XSS из-за несовместимости кодировок
- Множество классов ZF, в том числе Zend_Form, Zend_Filter, Zend_Form, Zend_Log и Zend_View, вызывали htmlentities() и htmlspecialchars() с неуказанными или жёстко прописанными кодировками. При использовании нетипичных кодировок (например, UTF-7) кодировка может определиться некорректно и открыть возможность злоумышленнику передать XSS-эксплойт. Рекомендуется в каждом из этих компонентов задавать кодировку явно, не надеясь на автоопределение.
Рекомендуется обновить свои приложения для устранения вышеперечисленных проблем.
О не связанных с безопасностью изменениях вы можете узнать по ссылкам:
http://framework.zend.com/changelog/1.9.7
http://framework.zend.com/changelog/1.8.5
http://framework.zend.com/changelog/1.7.9
Это последний запланированный релиз ветки 1.9. До конца этого месяца планируется выпустить версию 1.10.0
Подробнее о релизе:
В Zend DevZone от Matthew Weier O’Phinney
На blog.astrumfutura.com от Padraic Brady
Posted by Сергей Митрошин on 12 января 2010 at 23:04 under Новости.
Tags: reCAPTHCA, Zend_Dojo, Zend_Filter, Zend_Form, Zend_Json, Zend_Log, Zend_View
Comment on this post.
Matthew Weier O’Phinney опубликовал краткое руководство по созданию SOAP, XML-RPC, JSON-RPC или AMF API на базе Zend Framework.
Я знал, что через ZF это сделать просто, но, оказалось, даже проще, чем я думал. Например, вот так выглядит создание XML-RPC-сервера:
1 2 3
| $server = new Zend_XmlRpc_Server ();
$server->setClass('My_Awesome_Api');
echo $server->handle(); |
Также не следует использовать для этих целей полноценный MVC — просто незачем проходить полный цикл диспатчеризации, если можно заменить его куда более производительным сервис-сервером:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class XmlRpc_Bootstrap extends Bootstrap
{
public function run ()
{
$server = new Zend_XmlRpc_Server ();
$server->setClass('My_Awesome_Api');
echo $server->handle();
}
}
$app = new Zend_Application (
APPLICATION_ENV ,
array(
'bootstrap' => array(
'class' => 'XmlRpc_Bootstrap',
'path' => 'path/to/Bootstrap.php',
),
'config' => APPLICATION_PATH . '/configs/application.ini',
),
);
$app->bootstrap()
->run(); |
Подробности читайте в оригинале статьи.
Posted by Сергей Митрошин on 24 октября 2009 at 8:10 under Прочее, Руководства, Ссылки.
Tags: AMF, bootstrap, JSON-RPC, service API, SOAP, XML-RPC
4 Comments.
Ни для кого не секрет, что Zend_OpenID не всегда работает так, как хотелось бы.
Сегодня я столкнулся с тем, что этот компонент не принимал ответ от openID-сервера google, выдавая ошибку “Discovery failed”. После изучения исходных кодов я выяснил, что необходимый для корректной валидации код просто отсутствует в компоненте. Пришлось воспользоваться грязным хаком (источник):
-
В метод Zend_OpenId_Consumer::_discovery(), в серию условий if preg_match (начало около строки 740), надо добавить следующий блок:
1 2 3
| } else if (preg_match('/<URI>([^<]+)<\/URI>/i', $response, $r)) {
$version = 2.0;
$server = $r[1]; |
-
Класс тот же, метод _checkId(). В блок if ($version <= 2.0), в if ($this->_session !== null) надо добавить:
1 2 3 4
| if ($server == 'https://www.google.com/accounts/o8/ud') {
$this->_session->identity = 'http://specs.openid.net/auth/2.0/identifier_select';
$this->_session->claimed_id = 'http://specs.openid.net/auth/2.0/identifier_select';
} |
-
Там же, следующая ветка – else if (defined(‘SID’)):
1 2 3 4
| if ($server == 'https://www.google.com/accounts/o8/ud') {
$_SESSION['zend_openid']['identity'] = 'http://specs.openid.net/auth/2.0/identifier_select';
$_SESSION['zend_openid']['claimed_id'] = 'http://specs.openid.net/auth/2.0/identifier_select';
} |
-
Там же, вне if/else if/else ветки, но внутри $version <= 2.0:
1 2 3 4
| if ($server == 'https://www.google.com/accounts/o8/ud') {
$params['openid.identity'] = 'http://specs.openid.net/auth/2.0/identifier_select';
$params['openid.claimed_id'] = 'http://specs.openid.net/auth/2.0/identifier_select';
} |
Конечно, это некрасивое решение, но оно приемлемо до тех пор, пока этот баг не будет закрыт.
Posted by Сергей Митрошин on 17 октября 2009 at 22:32 under Авторизация и аутентификация, Руководства.
3 Comments.
Недавно на сайте http://fbdevzone.com/ был рассмотрен удобный способ передачи URL-параметров в действия.
Обычно для этой цели используются методы $this->_getParam() и $this->getRequest()->getParam() в классах контроллера. Это довольно удобный способ, однако он не идеален — прописывать это из метода в метод не очень удобно.
Предложенный способ заключается в том, что параметры передаются в действия в виде аргументов метода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| /**
* index/info/
* index/info/tags/one/tags/two
* index/info/msg/msg-only
* index/info/date/2009-10-03
* index/info/msg/RandomOrder/date/2009-10-03
*
* @param array $tags
* @param Zend_Date $date
* @param string $msg
*/
public function infoAction (array $tags = null, Zend_Date $date = null, $msg = 'hello')
{
Zend_Debug ::dump($tags);
if (!is_null($date)) echo $date->get(Zend_Date ::DATETIME_FULL);
else echo "no date passed\n";
Zend_Debug ::dump($msg);
die;
} |
При помощи Zend_Reflection производится парсинг phpdoc-комментариев, присваивая переменным соответствующие типы.
Подробнее читайте в блоге автора. Там же вы найдёте исходный код класса.
Posted by Сергей Митрошин on 13 октября 2009 at 22:47 under MVC-компоненты, Библиотеки для ZF, Руководства.
Tags: Zend_Controller, Zend_Controller_Router
6 Comments.