У меня есть объекты в php, каждый из которых представляет «элемент» и всю связанную с ним информацию.
И когда пользователь просматривает страницу, эти объекты должны быть переданы в javascript. В идеале, отражая одну и ту же структуру, я могу использовать Raphael для отображения каждого элемента и его информации в виде отдельных фигур на моем сайте.
Однако, как вы получаете объект от php до javascript?
Вы можете преобразовать объект PHP в массив, а затем использовать функцию JSON для его кодирования. После этого расшифруйте его с помощью JavaScript. Вот несколько основных шагов:
Преобразуйте объект PHP в массив.
Использование json_encode()
для кодирования этого массива PHP.
Передавать JSON-кодированные данные в PHP
Декодируйте JSON из JavaScript с помощью JSON.parse
или вы можете использовать jQuery.parseJSON
для этого.
Это интересное руководство по передаче объекта JavaScript в объект PHP . Вам может показаться, что это полезно, просмотрев некоторые другие видео / связанные видео.
Надеюсь это поможет.
Поздний ответ, но я очень удивлен, что никто не упомянул, что такое, возможно, «правильный» способ развернуть эту функциональность.
Внедрите интерфейс JsonSerializable на свой объект. Этот интерфейс определяет один абстрактный метод, jsonSerialize
. Этот метод должен возвращать представление массива вашего объекта.
jsonSerialize
при попытке использовать json_encode
для объекта. Вы можете рассматривать этот интерфейс как своего рода «магический метод», специфичный для собственной функции кодирования JSON, эквивалентный __toString
для строк.
Введя его в действие, у вас есть объект, который выглядит так:
class MyFoo implements JsonSerializable { public $bar = 'hello'; public $baz = 'world'; public function jsonSerialize () { return array( 'bar'=>$this->bar, 'baz'=>$this->baz ); } } $myFooInstance= new MyFoo(); echo json_encode($myFooInstance); // {"bar":"hello","baz":"world"}
Когда я реализую это в своих проектах, я обычно помещаю метод toArray
в объекты, который генерирует массив, и я использую jsonSerialize
:
public function jsonSerialize () { return $this->toArray(); }
… таким образом я могу также использовать форму массива, если я так хочу. Это также удобно, если вы реализуете сериализацию объектов с помощью __sleep
Документация
JsonSerializable
– http://www.php.net/manual/en/class.jsonserializable.php json_encode
– http://www.php.net/manual/en/function.json-encode.php Я использую это:
<script> var js_data = '<?php echo json_encode($php_data); ?>'; var js_obj_data = JSON.parse(js_data ); </script>
$ php_data может быть от простых массивов до массивов объектов.
Вы будете использовать JSON для кодирования объектов PHP, чтобы они могли получить доступ к Javascript. Специфика того, как это сделать, зависит от вашего приложения.
Для этой цели PHP имеет функции json_encode и json_decode.