Массив PHP или объект или другая сложная структура данных не могут быть перемещены или сохранены или использованы иным образом вне запущенного скрипта PHP . Если вы хотите, чтобы сохраняли такую сложную структуру данных за пределами одного запуска скрипта, вам необходимо сериализовать . Это просто означает, что структура превращается в «более низкий общий знаменатель», который может обрабатываться другими вещами, кроме PHP, такими как базы данных, текстовые файлы, сокеты. Стандартная функция PHP serialize
- это просто формат , чтобы выразить такую вещь, она сериализует структуру данных в строковое представление, уникальное для PHP, и может быть изменено на PHP-объект с использованием unserialize
. Существует много других форматов, таких как JSON или XML.
Возьмем, к примеру, эту общую проблему:
PHP и Javascript могут общаться только через строки. Вы можете легко передать строку "foo"
в Javascript. Вы можете легко передать номер 1
в Javascript. Вы можете легко передавать логические значения true
и false
в Javascript. Но как передать этот массив в Javascript?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
Ответ - сериализация . В случае PHP / Javascript JSON на самом деле является лучшим форматом сериализации:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript может легко изменить это на реальный массив Javascript.
Это так же верно, как представление одной и той же структуры данных:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Но в значительной степени только PHP использует его, поддержка этого формата в другом месте немного. Это очень распространено и хорошо поддерживается, но:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Существует множество ситуаций, когда вам необходимо передать сложные структуры данных в виде строк. Сериализация, представляющая произвольные структуры данных как строки, решает, как это сделать.
Я часто работаю с Flex в своем задании, и я буду рад помочь.. но Ваши вопросы заслуживают статьи для каждого :) Я попробую некоторый короткий ответ.
Код Maintenable: Я думаю, что те же правила любых других языков OO применяются. Некоторые определенные для гибкого провода правила я - использование для следования: используйте сильные переменные определенного типа, всегда полагайте, что события диспетчеризации как путь к Вашим компонентам UI говорят друг друга (немного больше начальной работы, очень гибкой и отделенной позже).
Платформы: посмотревший это, прочитайте документацию.. очень хороший, но я все еще чувствую, что их сложности не сбалансированы преимуществами, которые они предоставляют. Так или иначе я хотел бы передумать по этому вопросу..
Разговор с сервером: Прямо сейчас я использую BlazeDS, он работает очень хорошо.. существует много учебных руководств на предмете там при нахождении проблемы, настраивающей его, я был бы рад помочь.
Задержка: Вы имеете в виду в клиент-серверной связи? Если так, необходимо исследовать различный тип каналов реализации BlazeDS.. двухсторонний опрос http только для получения по запросу, псевдореальное время на http (комета).. при необходимости в больше, Услуги передачи данных LiveCycle ES, коммерческая реализация, от которой BlazeDS рождается, среди прочего предлагает другой протокол под названием RTMP, это не http-туннелировано, таким образом, может быть проблема с брандмауэрами и прокси, но это предлагает лучшую производительность (существует бесплатная версия с закрытым исходным кодом LCDS). Я использую стандарт http каналы в средах интранета и не нашел реальных проблем производительности даже с большими наборами данных.
Хорошо.. довольно много материала, не может быть более конкретно теперь по поводу каждого из этого, указывает, спросите Вас если потребность :)
Вот несколько больших ресурсов, чтобы сделать с лучшими практиками Flex/AS3 и стандартами:
Flex конвенции кодирования SDK и лучшие практики
Лучшие практики Flex – Часть 1: Установка Вашего проекта Flex
Первый, который я нашел особенно полезным и я пытаюсь удостовериться любая команда, с которой я работаю, все считали его
Я нашел платформу MVC, которую RIAWave связывают, чтобы быть абсолютно невероятными. Это супер легкий и простой в использовании. Я нашел, что Дымчатый топаз и PureMVC имели довольно крутую кривую обучения, и они оба чувствуют себя немного слишком большими для меня. RIAWave остается вне пути и просто дает Вам основы MVC для работы с.
AMFPHP на бэкенде очень хорош также. AMFPHP также имеет апачский модуль, который будет заботиться о сериализации/несериализации отправленных и полученных данных все в C, который сверкает быстро.
Если задержка будет беспокойством, то Вы захотите удостовериться, что Вы получаете хороший webhost или даже развертываетесь к нескольким дата-центрам так, чтобы Ваши пользователи никогда не были далеки от сервера. Походит немного рано для волнения об этом все же.