Показаны сообщения с ярлыком Zend Framework. Показать все сообщения
Показаны сообщения с ярлыком Zend Framework. Показать все сообщения

четверг, 13 марта 2014 г.

json_encode with array_diff будьте осторожны

Столкнулся с проблемой что json_encode вместо массива [] почему то начал создавать объект, хотя я передаю в метод массив. Перед тем как передавать массив я использовал array_diff для того, что б отфильтровать некоторые элементы. В мануале почему-то это не описано, но оказывается при отборе элементов из массива1 функция сохраняет ключи массива. Причем интересно, если ключи идут по порядку нчиная с 0, то json_encode кодирует нормально, если ключи содержат промежуток, то уже кодирует как объект.

Примеры, что б проще понять:


пятница, 31 января 2014 г.

Куки в Zend Framework, setcookie и header('Set-Cookie: ');

По старинке для уставновки cookie всегда пользовался setcookie, но так как сейчас использую Zend Framework 1.12 то решил воспользоваться его методами. А именно так как они рекомендуют в мануале:

  1. $this->getResponse()->setRawHeader(new Zend_Http_Header_SetCookie(
  2.     'foo''bar'NULL'/''example.com'falsetrue
  3. ));

Все бы ничего, но позже у меня возникла ошибка и только после действительного долгого поиска я обнаружил что проблема в том, что такой метод отправки cookie перезатирает все остальные куки которые уже установила страница. Дальше я нарыл, что метод setRawHeader использует встроенную функцию php - header для установки cookie:

header('Set-Cookie:  ...');

И собственно эта функция и затирает все что уже было отослано.

Погуглив я нашел, что я не один - http://stackoverflow.com/questions/5499476/is-it-ok-to-send-cookie-headers-directly-with-header-calls (см после: EDIT: AN IMPORTANT NOTICE)

После этого пришлось вернуть код обратно к setcookie.

Но меня мучает вопрос - Что я упускаю в Zend Framework? Неужели Zend не знает об этом?

Популярные сообщения