Во время работы над серверной частью одного iphone приложения, всплыла любопытная особенность Zend_Soap_Server. Приводила она к спонтанно (на первый взгляд) возникающим ошибкам при возвращении php-ных массивов. У нас выявление и отладка заняли несколько человеко-часов, и, возможно, данная статья позволит кому-то те же самые несколько часов сэкономить.
Читать полностью »
Рубрика «array» - 3
SoapServer на PHP. Пусть array всегда будет Map
2013-01-14 в 8:32, admin, рубрики: array, map, php, soap, Песочница, метки: array, map, PHP, soapКак устроены массивы в PHP
2012-12-23 в 17:56, admin, рубрики: array, internals, php, метки: array, internals, PHPВ прошлой статье я рассказывал о переменных, теперь пойдет речь о массивах.
Что такое массивы на уровне PHP?
На уровне PHP, массив — это упорядоченный список скрещенный с мэпом. Грубо говоря, PHP смешивает эти два понятия, в итоге получается, с одной стороны, очень гибкая структура данных, с другой стороны, возможно, не самая оптимальная, точнее, как выразился Anthony Ferrara:
PHP arrays are a great one-size-fits-all data structure. But like all one-size-fits-all <anything>, jack-of-all-trades usually means master of none.
(на картине изображен HashTable с Bucket-ами, автор неизвестен)
Читать полностью »
Класс dummyArray: как подружить код работающий с массивами и код работающий со свойствами объекта
2012-09-22 в 22:29, admin, рубрики: array, class, php, wrapper, велосипед, массив, метки: array, class, PHP, wrapper, велосипед, массив Возникла задача код работающий с набором данных как с массивом с кодом, который воспринимает этот же набор данных как класс.
Решение — создать класс с которым можно будет работать как с массивом (ArrayAccess), который будет также легко обходиться в foreach (Iterator) и у которого будут свойства с именами ключей. До кучи также был реализован интерфейс Countable.
Пример:
$user = new dummyArray;
// Добавим пару элементов в формате массива
$user['name'] = 'myname';
$user['sex'] = 'man';
// Добавим следующие пару записей в виде свойств объекта
$user->age = 18;
$user->occupation = 'director';