PHPackages                             nilportugues/laravel5-json - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. nilportugues/laravel5-json

ActiveLibrary[API Development](/categories/api)

nilportugues/laravel5-json
==========================

Laravel 5 Json API Transformer Package

1.3.0(10y ago)34472[1 issues](https://github.com/nilportugues/laravel5-json-transformer/issues)MITPHP

Since Aug 18Pushed 10y agoCompare

[ Source](https://github.com/nilportugues/laravel5-json-transformer)[ Packagist](https://packagist.org/packages/nilportugues/laravel5-json)[ Docs](http://nilportugues.com)[ RSS](/packages/nilportugues-laravel5-json/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (6)Versions (16)Used By (0)

Laravel 5 JSON Transformer Package
==================================

[](#laravel-5-json-transformer-package)

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/2ca84518a8a396e013d01fd5525260a849e2ce3b3b0d8563431175eb33971cd9/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6e696c706f727475677565732f6c61726176656c352d6a736f6e2d7472616e73666f726d65722f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/nilportugues/laravel5-json-transformer/?branch=master) [![SensioLabsInsight](https://camo.githubusercontent.com/243ae38b15982711199394edd7e5dc6184de7d38de7329de02269397267b6fb9/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f61333933336237622d313365632d343463662d616566392d3064636532356534346566352f6d696e692e706e67)](https://insight.sensiolabs.com/projects/a3933b7b-13ec-44cf-aef9-0dce25e44ef5)[![Latest Stable Version](https://camo.githubusercontent.com/c9af57f0de72009895621f75ec634c989b971321f48d287598418c1129e3280c/68747470733a2f2f706f7365722e707567782e6f72672f6e696c706f727475677565732f6c61726176656c352d6a736f6e2f762f737461626c65)](https://packagist.org/packages/nilportugues/laravel5-json)[![Total Downloads](https://camo.githubusercontent.com/6bb2370ff38d2cb47aa8dac0f23ac7a0d8161abc5fec97daf89a48aaf65634f2/68747470733a2f2f706f7365722e707567782e6f72672f6e696c706f727475677565732f6c61726176656c352d6a736f6e2f646f776e6c6f616473)](https://packagist.org/packages/nilportugues/laravel5-json)[![License](https://camo.githubusercontent.com/f569dc775cd2acd4098811b6361bd1d65f61d5fa0ee96404d5b4e70fe9e0f4b8/68747470733a2f2f706f7365722e707567782e6f72672f6e696c706f727475677565732f6c61726176656c352d6a736f6e2f6c6963656e73653f)](https://packagist.org/packages/nilportugues/laravel5-json)[![Donate](https://camo.githubusercontent.com/7b6de155df30b37b25eb5fec52f9213680c3dbf067dfb7d7e2850ac4096c7d05/68747470733a2f2f7777772e70617970616c6f626a656374732e636f6d2f656e5f55532f692f62746e2f62746e5f646f6e6174655f534d2e676966)](https://paypal.me/nilportugues)

*Compatible with Laravel 5.0, 5.1 &amp; 5.2*

Installation
------------

[](#installation)

Use [Composer](https://getcomposer.org) to install the package:

```
$ composer require nilportugues/laravel5-json

```

Laravel 5 / Lumen Configuration
-------------------------------

[](#laravel-5--lumen-configuration)

**Step 1: Add the Service Provider**

**Laravel**

Open up `config/app.php` and add the following line under `providers` array:

```
'providers' => [

    //...
    \NilPortugues\Laravel5\Json\Laravel5JsonServiceProvider::class,
],
```

**Lumen**

Open up `bootstrap/app.php`and add the following lines before the `return $app;` statement:

```
$app->register(\NilPortugues\Laravel5\Json\Laravel5JsonServiceProvider::class);
$app->configure('json');
```

Also, enable Facades by uncommenting:

```
$app->withFacades();
```

**Step 2: Add the mapping**

Create a `json.php` file in `config/` directory. This file should return an array returning all the class mappings.

**Step 3: Usage**

For instance, lets say the following object has been fetched from a Repository , lets say `PostRepository` - this being implemented in Eloquent or whatever your flavour is:

```
use Acme\Domain\Dummy\Post;
use Acme\Domain\Dummy\ValueObject\PostId;
use Acme\Domain\Dummy\User;
use Acme\Domain\Dummy\ValueObject\UserId;
use Acme\Domain\Dummy\Comment;
use Acme\Domain\Dummy\ValueObject\CommentId;

//$postId = 9;
//PostRepository::findById($postId);

$post = new Post(
  new PostId(9),
  'Hello World',
  'Your first post',
  new User(
      new UserId(1),
      'Post Author'
  ),
  [
      new Comment(
          new CommentId(1000),
          'Have no fear, sers, your king is safe.',
          new User(new UserId(2), 'Barristan Selmy'),
          [
              'created_at' => (new \DateTime('2015/07/18 12:13:00'))->format('c'),
              'accepted_at' => (new \DateTime('2015/07/19 00:00:00'))->format('c'),
          ]
      ),
  ]
);
```

And a series of mappings, placed in `config/json.php`, that require to use *named routes* so we can use the `route()` helper function:

```
