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

четверг, 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 не знает об этом?

вторник, 15 октября 2013 г.

Интеграция Composer в PHPStorm, папки библиотек PHPStorm

Проблема: Некоторе папки в проекте PHPStorm считает как библиотеки, и соответственно не индексируются, игнорируются при поиске и т.д. Так же в настройках проекта изменения типа этих папок не сохраняется.

Причина: Собственно проблема возникла как раз из-за не до конца корректного использования Composer. В файле настроек composer.json была указана папка проекта  library как папка в которой стоит хранить библиотеки установленные с помощью Composer.

"vendor-dir": "library"
Получилось что в папке находились как собственные библиотеки так и 3d party. PHPStorm, будучи умным малым, автоматически считал конфигурацию composer и пометил все папки внутри указаннной как библиотеки.

Решение:
В версии 6.0.4  в которой работаю я мне пришлось убрать интеграцию проекта с composer. В более новых версиях PHPStorm появилась настройка "Add packages as libraries" для composer, которая говорит PHPStorm помечать или не помечать библиотеки, установленные composer, как "папки библиотек". Оба варианта все же оставляют возможность ошибочно внести в сторонюю библиотеку изменения. Мне кажется правильное решение будет разнести папки с собственными библиотеками и папку с библиотеками, установленными composer

вторник, 30 июля 2013 г.

Unicode to GSM / utf 8 to gsm / Кодировка из UTF 8 в GSM

Работая с смс сервисом столкнулся с проблемой, что хотя смс и короче чем 160 символов (англ. язык) сервис все равно разбивает СМС на части. Оказалось что смс сервисы работают с GSM кодировкой текста. Не вдаваясь в технические дебри GSM урезаный юникод. Немного погуглив нашел отличный класс, который и использовал на проекте.

https://github.com/onlinecity/php-smpp/blob/master/gsmencoder.class.php

среда, 27 марта 2013 г.

Новая фича PhpStorm - REST Client plugin

В последней (6-й на данный момент времени) версии PhpStorm появился приятный плагин для тестирования REST сервисов. И мне как раз выпала задача связанная с сервисом.

Плагин достаточно простой и понятный, GET запрос работал на ура, а вот POST почему-то не проходил. Сам запрос шел, но данные не передавались.

Промучавшись несколько часов я понял в чем дело. Дело в том, что для POST запроса необходим заголовок Content-Type и в моем случае заголовок полностью должен был выглядеть: Content-Type: application/x-www-form-urlencoded. К сожалению плагин не дает возможности вписать полностью кастомный заголовок так как предлагает варианты на выбор, среди которых нет нужного. Ждем обновлений.

ЗЫ. Хотел добавить снимок экрана с выбором вариантов, но при открытом селект-боксе в убунту принтскрин не сработал :(


вторник, 22 ноября 2011 г.

Тест по PHP

Прошел сегодня тест по PHP на mamba.ru

http://www.corp.mamba.ru/test/index.phtml

А сколько у тебя баллов?

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