Introduction





What is Fractal?

Fractal provides a presentation and transformation layer for complex data output, the like found in RESTful APIs, and works really well with JSON. Think of this as a view layer for your JSON/YAML/etc.

When building an API it is common for people to just grab stuff from the database and pass it to json_encode() . This might be passable for “trivial” APIs but if they are in use by the public, or used by mobile applications then this will quickly lead to inconsistent output.

Fractal on Packagist

Goals

Create a “barrier” between source data and output, so schema changes do not affect users

Systematic type-casting of data, to avoid foreach() ing through and (bool) ing everything

ing through and ing everything Include (a.k.a embedding, nesting or side-loading) relationships for complex data structures

Work with standards like HAL and JSON-API but also allow custom serialization

Support the pagination of data results, for small and large data sets alike

Generally ease the subtle complexities of outputting data in a non-trivial API

Questions?

Fractal was created by Phil Sturgeon. Find him on Twitter at @philsturgeon. Fractal is maintained by Graham Daniels and Jason Lewis. They can be found on Twitter at @greydnls and @jasonclewis.