Archive for the ‘Руководства’ Category
Автор: 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, основы
104 Comments.
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.
Здравствуйте.
Думаю, многие из вас сталкивались с проблемой склонения существительных в зависимости от какого-либо числа. Например, “15 дней”. А если будет 21, выводить “21 дней”? Для решения этой проблемы написано множество функций, но я не встречал реализации в виде помощника Zend_View. Итак, встречайте: App_View_Helper_Plural.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Helper_View_Plural extends Zend_View_Helper_Abstract
{
public function plural($n, $form1, $form2, $form3) {
$plural = ($n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
switch($plural) {
case 0:
default:
return $form1;
case 1:
return $form2;
case 2:
return $form3;
}
}
} |
Использование (в шаблоне):
1 2 3
| echo '1 ' . $this->plural(1, 'день', 'дня', 'дней') . '<br>';
echo '4 ' . $this->plural(4, 'день', 'дня', 'дней') . '<br>';
echo '25 ' . $this->plural(25, 'день', 'дня', 'дней'); |
Вывод:
1 день
4 дня
25 дней
Надеюсь, этого поможет вам сделать ваши проекты более удобными для пользователей.
Всего доброго.
Posted by Сергей Митрошин on 3 октября 2009 at 15:07 under Прочее, Руководства.
Tags: plural, Zend_View
6 Comments.
Ниже опубликован перевод статьи Matthew Weier O’Phinney Developing a Comprehensive Autoloader.
В этой статье я буду рассуждать о развитии и нововведениях Zend_Loader_Autoloader и смежного функционала. Тем не менее, основная цель статьи — показать различные проектировочные решения, которые ведут к созданию всеобъемлющего автозагрузчика для ваших PHP-приложений. Автозагрузка, внешне тривиальная задача, имеет много тонкостей, которые часто упускают.
Continue reading ‘Разработка всеобъемлющего автозагрузчика’ »
Posted by Сергей Митрошин on 8 мая 2009 at 13:28 under Прочее, Руководства.
Tags: Zend_Application, Zend_Loader, Zend_Tool, основы
8 Comments.
Zend_Filter_Input совершенно незаслуженно был обойдён вниманием со стороны разработчиков. На практике он способен во многих ситуациях заменить уже ставший привычным Zend_Form.
Continue reading ‘Обработка данных с помощью Zend_Filter_Input’ »
Posted by Сергей Митрошин on 16 февраля 2009 at 11:00 under Руководства, Формы и обработка входных данных.
Tags: Zend_Filter_Input, Zend_Validate
17 Comments.
В A.J. Brown’s blog было опубликовано руководство по использованию Memcached при помощи Zend_Cache. Как оказалось, всё просто и удобно. Рекомендую к прочтению.
Posted by Сергей Митрошин on 6 января 2009 at 9:55 under Прочее, Руководства, Ссылки.
Tags: memcached, Zend_Cache, кэширование
1 Comment.
Как известно, по умолчанию Zend_Form генерирует форму в виде списка определений. При этом многих не устраивает внешний вид списка – более привычным является оформление формы в таблицу. Можно решить эту проблему с помощью декораторов, но это решение является не самым лучшим.
В блоге Robert Basic опубликовано руководство под названием Styling the default Zend_Form layout, в котором рассказано, как с помощью CSS изменить внешний вид формы, чтобы она выглядела, как таблица. Именно так должна решаться проблема с внешним видом форм, а разметка форм должна оставаться списком определений (dl).
Posted by Сергей Митрошин on 26 декабря 2008 at 9:33 under Руководства, Ссылки, Формы и обработка входных данных.
Tags: CSS, Zend_Form
2 Comments.
Zend_Captcha – компонент Zend Framework, позволяющий быстро и удобно использовать CAPTCHA.
Если вы используете Zend_Form, то вам понадобится статья Zend_Captcha example, автор Robert Basic.
В случае, если вы хотите использовать Zend_Captcha без связки с Zend_Form, вам будет полезна статья Using Zend_Captcha_Image, опубликованная в блоге Sankho Malik
Posted by Сергей Митрошин on 20 декабря 2008 at 11:02 under Руководства, Формы и обработка входных данных.
Tags: captcha, Zend_Captcha, Zend_Captcha_Image, Zend_Form, Zend_Form_Element_Captcha
Comment on this post.