diff --git a/spec/Laracasts/Utilities/JavaScript/PHPToJavaScriptTransformerSpec.php b/spec/Laracasts/Utilities/JavaScript/PHPToJavaScriptTransformerSpec.php index 2b03269..8d7bc4b 100644 --- a/spec/Laracasts/Utilities/JavaScript/PHPToJavaScriptTransformerSpec.php +++ b/spec/Laracasts/Utilities/JavaScript/PHPToJavaScriptTransformerSpec.php @@ -73,9 +73,16 @@ function it_transforms_null_values() ->shouldMatch('/window.age = null;window.sum = null;/'); } - function it_throws_an_exception_if_an_object_cant_be_transformed(\StdClass $obj) + function it_throws_an_exception_if_an_object_cant_be_transformed(\Laracasts\Utilities\JavaScript\PHPToJavaScriptTransformer $obj) { $this->shouldThrow('Exception') ->duringBuildJavaScriptSyntax(['foo' => $obj]); } + + function it_does_not_throw_an_exception_for_stdClass(\StdClass $obj) + { + $this->buildJavaScriptSyntax(['foo' => $obj]) + ->shouldMatch('/window.window = window.window || {};/'); + } + } diff --git a/src/PHPToJavaScriptTransformer.php b/src/PHPToJavaScriptTransformer.php index 73c6ed2..acd7d96 100644 --- a/src/PHPToJavaScriptTransformer.php +++ b/src/PHPToJavaScriptTransformer.php @@ -3,6 +3,7 @@ namespace Laracasts\Utilities\JavaScript; use Exception; +use stdClass; class PHPToJavaScriptTransformer { @@ -28,6 +29,7 @@ class PHPToJavaScriptTransformer protected $types = [ 'String', 'Array', + 'stdClass', 'Object', 'Numeric', 'Boolean', @@ -190,7 +192,19 @@ protected function transformBoolean($value) * * @param object $value * @return string - * @throws Exception + */ + protected function transformstdClass($value) + { + if ($value instanceof stdClass) + { + return json_encode($value); + } + } + + /** + * @param $value + * @return string + * @throws \Exception */ protected function transformObject($value) {