Сейчас я покажу как можно организовать http-авторизацию в ZF. Т.к. на офсайте в мане ниче путного по этому поводу не сказано, то я пожалуй покажу людям как не переворачивая исходники Zend'а ее реализовать.
Делаем постраничную навигацию в Zend Framework
Когда я был совсем маленький, не знал, что такое Zend_paginator, да и вообще что такое Zend.
Создание постраничной навигации было для меня не то чтобы проблемой, но занятием, по крайней мере, рутинным и противным. Однако при изучении ZF, я обнаружил замечательную вещь. Итак, давайте по-немногу разбиратся.
Создание постраничной навигации было для меня не то чтобы проблемой, но занятием, по крайней мере, рутинным и противным. Однако при изучении ZF, я обнаружил замечательную вещь. Итак, давайте по-немногу разбиратся.
маленькие особенности Zend Framework-a
Думаю будет полезно тем, кто начинает разбираться с ZF
Вопрос-Ответ:
1. Хочу писать нормальные имена action-ов, например MySuperCuperAction, выдает ошибку.
Для этого в url-e пишет /mycontroller/my-super-cuper/ или через току, разделитель можно менять Zend_Controller_Dispatcher_Abstract->setWordDelimiter
2. В моделях приходиться каждый раз получать адаптер к базе
делаем Zend_Db_Table_Abstract::setDefaultAdapter($db) при инициализации и забываем в модельках про это.
3. Как рендерить в Named Segments response объекта (Часто применяется в лайаутах, например $this->layout()->sidebar)
Способов много
— в action-ах пишем render('MyActionName', 'MyNamedSegment'), тем самым результат рендеринга акшена MyActionName, запишется в MyNamedSegment, т.е. в лайаутах можно будет выводить $this->layout()->MyNamedSegment
— добавляем в объект Response $response->append('MyNamedSegment', 'myContent')
Вопрос-Ответ:
1. Хочу писать нормальные имена action-ов, например MySuperCuperAction, выдает ошибку.
Для этого в url-e пишет /mycontroller/my-super-cuper/ или через току, разделитель можно менять Zend_Controller_Dispatcher_Abstract->setWordDelimiter
2. В моделях приходиться каждый раз получать адаптер к базе
делаем Zend_Db_Table_Abstract::setDefaultAdapter($db) при инициализации и забываем в модельках про это.
3. Как рендерить в Named Segments response объекта (Часто применяется в лайаутах, например $this->layout()->sidebar)
Способов много
— в action-ах пишем render('MyActionName', 'MyNamedSegment'), тем самым результат рендеринга акшена MyActionName, запишется в MyNamedSegment, т.е. в лайаутах можно будет выводить $this->layout()->MyNamedSegment
— добавляем в объект Response $response->append('MyNamedSegment', 'myContent')
Исследование совместимости Zend Framework и Quercus PHP

Релиз Zend Framework 1.8.0
Под давлением спиртного праздников, ХабраСообщество оставило незамеченным выход 30 апреля релиза самого известного PHP фреймворка — Zend Framework за версией 1.8.0.
Про нововведения можно почитать в топике про Preview-релиз.
Слово Rapid уже вполне применимо к ZF, надеемся что скоро и слово Agile будет применимо в полной мере не только к Rails, но и к ZF :-)
Скачать последнюю версию и документацию всегда можно здесь
Прямые ссылки на 1.8.0: full || minimal
Документация(онлайн): RU || EN
Про нововведения можно почитать в топике про Preview-релиз.
Слово Rapid уже вполне применимо к ZF, надеемся что скоро и слово Agile будет применимо в полной мере не только к Rails, но и к ZF :-)
Скачать последнюю версию и документацию всегда можно здесь
Прямые ссылки на 1.8.0: full || minimal
Документация(онлайн): RU || EN
Загрузка и переименование файлов
Статья написана для тех, кто уже хоть немного знаком с архитектурой Zend Framework. Если кому-нибудь будет интересно — опишу работу с формами более подробно в отдельной статье.
Для загрузки файлов на сервер с помощью форм в Zend Framework Form есть элемент Zend_Form_Element_File. У него есть фильтр «Rename», который позволяет переименовать закачаный файл. Но есть минус — мы не можем просто указать новое имя для файла, чтобы сохранилось его расширение. Как это сделать? А как быть, если мы используем setMultiFile?
Для загрузки файлов на сервер с помощью форм в Zend Framework Form есть элемент Zend_Form_Element_File. У него есть фильтр «Rename», который позволяет переименовать закачаный файл. Но есть минус — мы не можем просто указать новое имя для файла, чтобы сохранилось его расширение. Как это сделать? А как быть, если мы используем setMultiFile?
Ускоряем разработку ч.1 (Расиширяем Zend_Db_Table)
Доброго времени суток. Многие согласятся с тем, что Zend Framework — это отличный инструмент, который позволяет сильно сократить время разработки проекта (и не только), но всё-равно часто приходится делать copy-paste методов в разных местах (контроллерах, моделях и т. д. ). Одним из таких мест является модель таблицы базы данных.
Zend_Db_Table и так позволяет легко выполнять CRUD операции.
Zend_Db_Table и так позволяет легко выполнять CRUD операции.
Как правильно использовать Zend_Paginator
Мой друг написал в песочнице статью, которая оказалась для меня (и не только) полезной, но через 7 дней была удалена. С его разрешения привожу её ниже. Если кому она тоже будет полезной, то он просит выслать ему инвайт на alxsad@gmail.com .
Привет всем любителям Zend Framework. Хочу расказать как правильно использовать компонент Zend_Paginator. Я очень часто видел, как плохо с ним работают некоторые программисты. Давайте посмотрим на код, представленный ниже:
Данный код я встречал на очень многих блогах, и даже, если не ошибаюсь, в самом мануале по Zend Framework. Давайте теперь посмотрим на запрос, который у нас получиться в результате:

Видите? Проблема заключается в том, что люди сразу забирают ВСЕ записи из базы данных, а потом уже из них выбирают нужные. Это огромная ошибка. Поэтому читаем как это делается
правильно.
Привет всем любителям Zend Framework. Хочу расказать как правильно использовать компонент Zend_Paginator. Я очень часто видел, как плохо с ним работают некоторые программисты. Давайте посмотрим на код, представленный ниже:
$pages = new Model_Pages();
$paginator = Zend_Paginator::factory($pages->getRows());
$paginator->setItemCountPerPage(1);
$paginator->setPageRange(1);
$paginator->setCurrentPageNumber($this->getRequest()->getParam('page', 1));
Zend_Paginator::setDefaultScrollingStyle('Sliding');
$this->view->pages = $paginator;
$paginator->setView($this->view);
Zend_View_Helper_PaginationControl::setDefaultViewPartial('paginator.phtml');
$this->view->paginator = $paginator;
* This source code was highlighted with Source Code Highlighter.
Данный код я встречал на очень многих блогах, и даже, если не ошибаюсь, в самом мануале по Zend Framework. Давайте теперь посмотрим на запрос, который у нас получиться в результате:

Видите? Проблема заключается в том, что люди сразу забирают ВСЕ записи из базы данных, а потом уже из них выбирают нужные. Это огромная ошибка. Поэтому читаем как это делается
правильно.
Zend Framework и магические кавычки

Каждый, кто имеет опыт работы с php, наверняка знает или слышал о директиве «magic_quotes_gpc»(магические кавычки). Если флаг директивы установлен в «On», то происходит автоматическое экранирование данных передаваемых в массивах $_GET, $_POST, $_COOKIE(о чём и намекает аббревиатура gpc на конце директивы).
При разработке сайта на Zend Framework'е одним из требований является отключенные «magic_quotes_gpc». Всё дело в том, что Zend Framework сам экранирует данные и при включённой директиве «magic_quotes_gpc» получается двойное экранирование, что не есть хорошо и красиво. Проблема не была бы столь острой, если бы все хостинги давали право менять значение «magic_quotes_gpc». Я уже не раз сталкивался с такой проблемой и нашёл на мой взгляд довольно элегантное решение.
Вышел Zend Framework 1.9.5
Очередной багфикс-релиз. Исправлено около 30 багов, большинство из которых было найдено в специально отведенные дни «охоты на баги» в текущем месяце.
Список исправлений можно посмотреть тут:
framework.zend.com/changelog/1.9.5
Качаем, как всегда, отсюда:
framework.zend.com/download/latest
Список исправлений можно посмотреть тут:
framework.zend.com/changelog/1.9.5
Качаем, как всегда, отсюда:
framework.zend.com/download/latest
Настройка Zend Framework 1.9.5 на Denwer 3
Здрасте всем! Сегодня я расскажу и покажу как поставить Zend Framework 1.9.5 на всеми известный Денвер 3. Но настройка будет не простая, а с возможностью использования zf Command Line Tool.
Select теряет ON при JOIN'e
Столкнулся с проблемой в ZF.
Есть две связанных таблицы. Обе наследуют Zend_Db_Table_Abstract. Формируем запрос к БД:
Смотрим запрос к БД:
ON в JOIN потерялся.
Есть две связанных таблицы. Обе наследуют Zend_Db_Table_Abstract. Формируем запрос к БД:
$select = $this->select();
$select->where(’Catalog.trashed = ?’, 1)
->where(’C.trashed = ?’, 0)
->join(array(’C’ => ‘Categories’), ‘C.id = Catalog.categoryid’, array())
->order($sort);
Смотрим запрос к БД:
SELECT `Catalog`.* FROM `Categories` AS `C` INNER JOIN `Catalog` WHERE (Catalog.trashed = 1) AND (C.trashed = 0) ORDER BY `sort` ASC
ON в JOIN потерялся.
Переписываем проект с Zend Framework на Rails
Около пяти месяцев назад я завязал с zend framework и пересел на рельсы. Тогда же начал переписывать свой проект www.okinfo.ru. Сейчас он уже закончен и sloccount показал что количество строк в проекте уменьшилось с 15000 до 4000. Мои знакомые php разработчики попросили success story и в итоге родилась эта статья. В ней я опишу как оно было, а так же немного расскажу о своем переходе на ruby.
Список докладов и финальная регистрация ZFConf 2011

Основные подготовительные работы по конференции закончены. Доклады сформированы. Среди спикеров представители KnpLabs, Magento, JetBrains, Sphinx и других известных компаний.
Открыта финальная регистрация!
YAF — самый быстрый php фреймворк*
Yaf — это PHP микро-фреймворк, взявший за основу структуру приложения Zend Framework, но написанный на С и является PHP extension доступным через PECL.
Основной (и единственной) задачей для написания его послужила необходимость максимально быстрой (сравнимой с php) обработки запросов в парадигме MVC но с удобством предоставляемым Zend Framework.
Yaf и Zend Framework, имеют аналогичные API и подобную концепцию, сохраняя при этом совместимость.
Я сгенерировал тестовое приложение (zf create project test) и провел небольшой синтетический тест производительности.
Основной (и единственной) задачей для написания его послужила необходимость максимально быстрой (сравнимой с php) обработки запросов в парадигме MVC но с удобством предоставляемым Zend Framework.
Yaf и Zend Framework, имеют аналогичные API и подобную концепцию, сохраняя при этом совместимость.
Я сгенерировал тестовое приложение (zf create project test) и провел небольшой синтетический тест производительности.
Кеширование и теги при использовании ZF + memcached
Из песочницы
Предисловие
В процессе разработки с использованием связки Zend Framework + Memcached приходится сталкиваться иногда как с (чрезмерной) обильностью имеющегося функционала фреймворка, так и с определёнными ограничениями. Об одном из таких случаев и найденном решении я и попытаюсь рассказать в этой статье.
Описание проблемы
Как известно, Memcached представляет собой относительно простое для использование Key/Value хранилище с простым, необходимым и достаточным функционалом. Предоставляемые ZF интерфейсы для взаимодействия с Memcached включены в общую библиотеку работы с кешем (включает в себя также адаптеры для Sqlite, Xcache, ZendServer и т.д.). Некоторые из этих систем кеширования поддерживают использование тегов для объектов кеширования, однако Memcached такой функцией не обладает, поэтому попытки использовать стандартные интерфейсы классов ZF для кеширования объектов с указанием тегов при работе с Memcached приведут лишь к ошибкам (в логах) вплоть до исключений. (Подробнее можно прочитать в документации).
Видео и презентации ZFConf 2011 выложены в бесплатный доступ

Видео, доступное по адресу www.zfconf.ru/2011/video, охватывает доклады:
Гибкая архитектура Zend Framework приложений с использованием Dependency Injection
Алексей Качаев (Сogniance, Senior PHP Developer)
Воюем за ресурсы: Повышение производительности Zend Framework-приложения с помощью phpDaemon, Varnish и ESI
Алексей Качаев (Сogniance, Senior PHP Developer)
ZFConf 2012 пройдет весной в Москве — открыта предварительная регистрация

Уже сейчас доступна предварительная регистрация. Финальная регистрация, как обычно, будет открыта после формирования итогового списка докладов. Участники, прошедшие предварительную регистрацию, получат приоритетные уведомления об этом.
Свое участие в качестве спикеров уже подтвердили ряд специалистов. Также ведутся переговоры с иностранными докладчиками, в том числе с Zend Framework Core Team.
Если вам есть что рассказать сообществу, напишите нам через специальную форму о предлагаемом докладе. Для иногородних докладчиков обсуждаются условия по компенсации расходов на поездку.
Доклады и финальная регистрация ZFConf 2012

В этом году с докладом выступит гость из Италии — Enrico Zimuel из Zend Framework Core Team. А также Виктор Фараздаги, Александр Веремьев, Алексей Качаев и многие другие специалисты.