123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- JsonBuilder
- ===========
- Overview
- --------
- The JSON builder allows you to build your JSON through the Symfony
- `PropertyAccess Component`_ while keeping the control of the value escaping.
- Create a builder
- ~~~~~~~~~~~~~~~~
- To build some JSON, you will need to instantiate a builder::
- use FOS\CKEditorBundle\Builder\JsonBuilder;
- $builder = new JsonBuilder();
- Set your values
- ~~~~~~~~~~~~~~~
- To set your values on the builder, you can either use ``setValues`` or
- ``setValue`` but be aware they don't behave same. Basically, ``setValues``
- allows you to append a set of values in the builder without escaping
- control whereas ``setValue`` allows you to append one value in the builder
- but with escaping control.
- Append a set of values
- ~~~~~~~~~~~~~~~~~~~~~~
- To append a set of values in the builder, just use ``setValues`` and
- pass your values as first argument:
- .. code-block:: php
- $builder->setValues(array('foo' => array('bar')));
- Additionally, this method takes as second argument a path prefix (`PropertyAccess Component`_)
- which allows you to append your values where you want in the builder graph.
- So, the next sample is basically the equivalent of the precedent::
- $builder->setValues(array('bar'), '[foo]');
- Append one value
- ~~~~~~~~~~~~~~~~
- To append one value in the builder, just use ``setValue`` and pass the
- path as first argument and the value as second one::
- $builder->setValue('[foo][0]','bar');
- If you want to keep control of the value escaping, this part is for you.
- Basically, just pass ``false`` as third argument::
- $builder->setValue('[foo][0]','bar', false);
- Configure the JSON encode options
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- By default, the JSON builder uses the native ``json_encode`` options.
- To override it, you can use::
- $builder->setJsonEncodeOptions(JSON_FORCE_OBJECT);
- $jsonEncodeOptions = $builder->getJsonEncodeOptions();
- Values for those options can be found in `PHP documentation for json_decode()`_
- Build your JSON
- ~~~~~~~~~~~~~~~
- Once your builder is well configured, you can build your JSON::
- $json = $builder->build();
- Reset the builder
- -----------------
- Because the builder is stateful (keep a track of every values), you
- need to reset it if you want to restart a json build::
- $builder->reset();
- Example
- ~~~~~~~
- .. code-block:: php
- use FOS\CKEditorBundle\Builder\JsonBuilder;
- $builder = new JsonBuilder();
- // {"0":"foo","1":bar}
- echo $builder
- ->setJsonEncodeOptions(JSON_FORCE_OBJECT)
- ->setValues(array('foo'))
- ->setValue('[1]', 'bar', false)
- ->build();
- // {"foo":["bar"],"baz":bat}
- echo $builder
- ->reset()
- ->setValues(array('foo' => array('bar')))
- ->setValue('[baz]', 'bat', false)
- ->build();
- .. _`PHP documentation for json_decode()`: http://php.net/manual/en/function.json-encode.php
- .. _`PropertyAccess Component`: http://symfony.com/doc/current/components/property_access/index.html
|