Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Commit

Permalink
Merge branch 'feature/4534' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
weierophinney committed May 23, 2013
151 parents d3c8400 + a2b3a39 + cbb5bf2 + 3ef3347 + bc77506 + e5e4203 + 2a10a27 + 8ba934c + 23ca50c + fd53025 + d95e884 + fb9734f + c781722 + a76fdf6 + 7f04465 + 3bc62a9 + f574eb9 + 52d314b + bada1dc + 842e034 + b44331a + 8d1b4e9 + 59d10c2 + e630f51 + 96f4abb + bfcf88b + e2e6ee0 + bd53446 + 62fffaa + 075b3a5 + dfc876b + 2056187 + ccaac9b + 5088038 + e4fa7ad + efc7cf5 + 0f33a2d + a3589c7 + 3ddf1a3 + d86b089 + 491f302 + c0efd18 + f9e572c + 3077af2 + a811b75 + 585f923 + 9b385ff + ec1f853 + b1a5d58 + a1cf97e + c1b8314 + 1482b41 + 7d80b85 + 869bbf8 + 403ce8d + 008804b + 87522da + d31ec42 + 2f2a15a + 585cc82 + a9438e2 + d59be1f + 643e2df + a49e8f2 + 08fd26d + b52d5dc + de5abc1 + 48f2d19 + 34ca3a0 + 5169094 + 25abd15 + baa09a1 + 355680a + b2b0d91 + 6986810 + 7b1513c + 6f9a6cc + 39a1c1e + 92dbdb3 + ac3a5aa + ee15c3a + 67f414a + 49138fb + a4ebc7b + 6b11637 + f128e27 + 41746af + cc083fe + 3d54828 + ccb0392 + a8ab5b0 + 1128b0c + b5ca6d2 + 5ef536e + 6878fa7 + 66a7225 + 869024d + 82f5ac4 + a831196 + dde75d7 + 9aba77c + 8474496 + 7c3bb76 + ad8e418 + a262925 + ee212be + 7f01229 + 42758bb + e91fa40 + 21394b2 + c56da7c + 9327465 + 95794f5 + 86491b5 + b24dc4f + 295467a + dc56d1e + d4c89e8 + ddd7418 + 8d06baa + ba834b9 + 292f809 + d235382 + 2b8ddfb + a90e617 + 8897e13 + 88b1391 + dc0450d + 9fa0112 + 7b9adef + 8010d61 + 8aa284d + d94ef71 + a3e5e8a + 6601fe6 + 6290724 + 5e7c801 + d74f16a + f3c55cf + f7787b1 + e1c3e3c + 88e1629 + 3314d9a + 09dfc28 + 6eac5f2 + aa1a1a6 + c602a92 + 9275250 + 11d2caa + 295642a + 8b56746 commit 1f38df6
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 1 deletion.
5 changes: 5 additions & 0 deletions src/Encoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

use Iterator;
use IteratorAggregate;
use JsonSerializable;
use ReflectionClass;
use Zend\Json\Exception\InvalidArgumentException;
use Zend\Json\Exception\RecursionException;
Expand Down Expand Up @@ -66,6 +67,10 @@ public static function encode($value, $cycleCheck = false, $options = array())
{
$encoder = new static(($cycleCheck) ? true : false, $options);

if ($value instanceof JsonSerializable) {
$value = $value->jsonSerialize();
}

return $encoder->_encodeValue($value);
}

Expand Down
24 changes: 23 additions & 1 deletion test/JsonTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,29 @@ public function testToJSONSerialization()
$this->assertEquals('{"firstName":"John","lastName":"Doe","email":"john@doe.com"}', $result);
}

/**
public function testJsonSerializableWithBuiltinImplementation()
{
if (version_compare(PHP_VERSION, '5.4.0', 'lt')) {
$this->markTestSkipped('JsonSerializable does not exist in PHP <5.4.0.');
}

$encoded = Json\Encoder::encode(
new TestAsset\JsonSerializableBuiltinImpl()
);

$this->assertEquals('["jsonSerialize"]', $encoded);
}

public function testJsonSerializableWithZFImplementation()
{
$encoded = Json\Encoder::encode(
new TestAsset\JsonSerializableZFImpl()
);

$this->assertEquals('["jsonSerialize"]', $encoded);
}

/**
* test encoding array with Zend_JSON_Expr
*
* @group ZF-4946
Expand Down
26 changes: 26 additions & 0 deletions test/TestAsset/JsonSerializableBuiltinImpl.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Json
*/

namespace ZendTest\Json\TestAsset;

use JsonSerializable;

/**
* Implementation of the built-in JsonSerializable interface.
*
* This asset will not work in PHP <5.4.0.
*/
class JsonSerializableBuiltinImpl implements JsonSerializable
{
public function jsonSerialize()
{
return array(__FUNCTION__);
}
}
21 changes: 21 additions & 0 deletions test/TestAsset/JsonSerializableZFImpl.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @package Zend_Json
*/

namespace ZendTest\Json\TestAsset;

use Zend\Stdlib\JsonSerializable;

class JsonSerializableZFImpl implements JsonSerializable
{
public function jsonSerialize()
{
return array(__FUNCTION__);
}
}

0 comments on commit 1f38df6

Please sign in to comment.