Output complex, flexible, AJAX/RESTful data structures.

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

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.