Mercurial > hg > isophonics-drupal-site
annotate vendor/symfony/serializer/Encoder/JsonEncode.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 129ea1e6d783 |
children |
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@14 | 14 use Symfony\Component\Serializer\Exception\NotEncodableValueException; |
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 |
Chris@0 | 25 public function __construct($bitmask = 0) |
Chris@0 | 26 { |
Chris@0 | 27 $this->options = $bitmask; |
Chris@0 | 28 } |
Chris@0 | 29 |
Chris@0 | 30 /** |
Chris@0 | 31 * Encodes PHP data to a JSON string. |
Chris@0 | 32 * |
Chris@0 | 33 * {@inheritdoc} |
Chris@0 | 34 */ |
Chris@17 | 35 public function encode($data, $format, array $context = []) |
Chris@0 | 36 { |
Chris@0 | 37 $context = $this->resolveContext($context); |
Chris@0 | 38 |
Chris@0 | 39 $encodedJson = json_encode($data, $context['json_encode_options']); |
Chris@0 | 40 |
Chris@14 | 41 if (JSON_ERROR_NONE !== json_last_error() && (false === $encodedJson || !($context['json_encode_options'] & JSON_PARTIAL_OUTPUT_ON_ERROR))) { |
Chris@14 | 42 throw new NotEncodableValueException(json_last_error_msg()); |
Chris@0 | 43 } |
Chris@0 | 44 |
Chris@0 | 45 return $encodedJson; |
Chris@0 | 46 } |
Chris@0 | 47 |
Chris@0 | 48 /** |
Chris@0 | 49 * {@inheritdoc} |
Chris@0 | 50 */ |
Chris@0 | 51 public function supportsEncoding($format) |
Chris@0 | 52 { |
Chris@0 | 53 return JsonEncoder::FORMAT === $format; |
Chris@0 | 54 } |
Chris@0 | 55 |
Chris@0 | 56 /** |
Chris@0 | 57 * Merge default json encode options with context. |
Chris@0 | 58 * |
Chris@0 | 59 * @return array |
Chris@0 | 60 */ |
Chris@17 | 61 private function resolveContext(array $context = []) |
Chris@0 | 62 { |
Chris@17 | 63 return array_merge(['json_encode_options' => $this->options], $context); |
Chris@0 | 64 } |
Chris@0 | 65 } |