Output complex, flexible, AJAX/RESTful data structures.

Phil Sturgeon ba898fbb4b Fixed failing tests now JSON API is not always array. vor 10 Jahren
src aa31b6ade3 Remove array() when serialize an item resource in JsonApiSerializer vor 10 Jahren
test ba898fbb4b Fixed failing tests now JSON API is not always array. vor 10 Jahren
.gitattributes 65e8e6ee67 Added a .gitattributes vor 10 Jahren
.gitignore a2bd78c535 Cheer up SensionLab insight. vor 10 Jahren
.scrutinizer.yml 4fa8d5ae80 Wait for 10 minutes and merge multiple coverage reports. vor 10 Jahren
.travis.yml 15129a85a1 Update .travis.yml vor 10 Jahren
CHANGELOG.md a91cdcfe39 Updated changelog for 0.9.1. vor 10 Jahren
CONTRIBUTING.md 5e26989f5c Made Sensio Insight happy. vor 11 Jahren
Guardfile 630bee69f6 Whitespace fixes vor 10 Jahren
LICENSE 5e26989f5c Made Sensio Insight happy. vor 11 Jahren
README.md 2cafd7e3e4 Updated the badges vor 10 Jahren
composer.json ff8389f9fe New email vor 10 Jahren
phpunit.xml.dist 4f486dad2c Added some stubs for more realistic tests. vor 10 Jahren

README.md

Fractal

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

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.

Goals

  • Create a protective shield 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
  • 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

This package is compliant with PSR-1, PSR-2 and PSR-4. If you notice compliance oversights, please send a patch via pull request.

Install

Via Composer

{
    "require": {
        "league/fractal": "0.9.*"
    }
}

Requirements

The following versions of PHP are supported by this version.

  • PHP 5.3
  • PHP 5.4
  • PHP 5.5
  • PHP 5.6
  • HHVM

Documentation

Fractal has full documentation, powered by Sculpin.

Contribute to this documentation in the sculpin branch.

Todo

  • Add JSON-API (kinda done) and HAL serializers

Testing

$ phpunit

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.