Output complex, flexible, AJAX/RESTful data structures.

Phil Sturgeon ba21c65774 Merge branch 'master' of github.com:thephpleague/fractal into develop 10 anos atrás
src ba21c65774 Merge branch 'master' of github.com:thephpleague/fractal into develop 10 anos atrás
test ba21c65774 Merge branch 'master' of github.com:thephpleague/fractal into develop 10 anos atrás
.gitignore a2bd78c535 Cheer up SensionLab insight. 10 anos atrás
.travis.yml 91a8ef59da Improved code coverage. 10 anos atrás
CHANGELOG.md ba21c65774 Merge branch 'master' of github.com:thephpleague/fractal into develop 10 anos atrás
CONTRIBUTING.md 5e26989f5c Made Sensio Insight happy. 11 anos atrás
Guardfile 630bee69f6 Whitespace fixes 10 anos atrás
LICENSE 5e26989f5c Made Sensio Insight happy. 11 anos atrás
README.md cce4072cfb Pointlessly moving shit around. 10 anos atrás
composer.json 7ad653113d Fix pagination support for new non-existant-at-the-mo paginator. 10 anos atrás
phpunit.xml.dist 4f486dad2c Added some stubs for more realistic tests. 10 anos atrás

README.md

Fractal Build Status

Latest Stable Version Total Downloads Coverage Status License

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 "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
  • 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

  • Wrap optional params in a ParamBag object or similar
  • 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.