Mercurial > hg > isophonics-drupal-site
annotate vendor/symfony/serializer/Encoder/JsonEncode.php @ 8:50b0d041100e
Further files for download
author | Chris Cannam |
---|---|
date | Mon, 05 Feb 2018 10:56:40 +0000 |
parents | 4c8ae668cc8c |
children | 1fec387a4317 |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 /* |
Chris@0 | 4 * This file is part of the Symfony package. |
Chris@0 | 5 * |
Chris@0 | 6 * (c) Fabien Potencier <fabien@symfony.com> |
Chris@0 | 7 * |
Chris@0 | 8 * For the full copyright and license information, please view the LICENSE |
Chris@0 | 9 * file that was distributed with this source code. |
Chris@0 | 10 */ |
Chris@0 | 11 |
Chris@0 | 12 namespace Symfony\Component\Serializer\Encoder; |
Chris@0 | 13 |
Chris@0 | 14 use Symfony\Component\Serializer\Exception\UnexpectedValueException; |
Chris@0 | 15 |
Chris@0 | 16 /** |
Chris@0 | 17 * Encodes JSON data. |
Chris@0 | 18 * |
Chris@0 | 19 * @author Sander Coolen <sander@jibber.nl> |
Chris@0 | 20 */ |
Chris@0 | 21 class JsonEncode implements EncoderInterface |
Chris@0 | 22 { |
Chris@0 | 23 private $options; |
Chris@0 | 24 private $lastError = JSON_ERROR_NONE; |
Chris@0 | 25 |
Chris@0 | 26 public function __construct($bitmask = 0) |
Chris@0 | 27 { |
Chris@0 | 28 $this->options = $bitmask; |
Chris@0 | 29 } |
Chris@0 | 30 |
Chris@0 | 31 /** |
Chris@0 | 32 * Encodes PHP data to a JSON string. |
Chris@0 | 33 * |
Chris@0 | 34 * {@inheritdoc} |
Chris@0 | 35 */ |
Chris@0 | 36 public function encode($data, $format, array $context = array()) |
Chris@0 | 37 { |
Chris@0 | 38 $context = $this->resolveContext($context); |
Chris@0 | 39 |
Chris@0 | 40 $encodedJson = json_encode($data, $context['json_encode_options']); |
Chris@0 | 41 |
Chris@0 | 42 if (JSON_ERROR_NONE !== $this->lastError = json_last_error()) { |
Chris@0 | 43 throw new UnexpectedValueException(json_last_error_msg()); |
Chris@0 | 44 } |
Chris@0 | 45 |
Chris@0 | 46 return $encodedJson; |
Chris@0 | 47 } |
Chris@0 | 48 |
Chris@0 | 49 /** |
Chris@0 | 50 * {@inheritdoc} |
Chris@0 | 51 */ |
Chris@0 | 52 public function supportsEncoding($format) |
Chris@0 | 53 { |
Chris@0 | 54 return JsonEncoder::FORMAT === $format; |
Chris@0 | 55 } |
Chris@0 | 56 |
Chris@0 | 57 /** |
Chris@0 | 58 * Merge default json encode options with context. |
Chris@0 | 59 * |
Chris@0 | 60 * @param array $context |
Chris@0 | 61 * |
Chris@0 | 62 * @return array |
Chris@0 | 63 */ |
Chris@0 | 64 private function resolveContext(array $context = array()) |
Chris@0 | 65 { |
Chris@0 | 66 return array_merge(array('json_encode_options' => $this->options), $context); |
Chris@0 | 67 } |
Chris@0 | 68 } |