2017 © Pedro Peláez
 

library gateway

Laravel 5 gateway generator package.

image

eilander/gateway

Laravel 5 gateway generator package.

  • Friday, February 9, 2018
  • by markeilander
  • Repository
  • 0 Watchers
  • 3 Stars
  • 135 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 18 Versions
  • 7 % Grown

The README.md

Laravel 5 Gateway package

An laravel implementation of the Gateway Pattern, (*1)

A gateway encapsulates the semantic gap between the object-oriented domain layer and the relation-oriented persistence layer.

Further reading: http://ryantablada.com/post/two-design-patterns-that-will-make-your-applications-better, (*2)

Table of contents

[TOC], (*3)

Usage

Step 1: Add the Service Provider

In your config/app.php add Eilander\Repository\Providers\RepositoryServiceProvider:class to the end of the providers array:, (*4)

<?php
'providers' => [
    ...
    Eilander\Gateway\Providers\GatewayServiceProvider::class,
],

Step 2: Add package to composer.json for autoloading

Add the package to the main composer.json for autoloading and run composer dump-autoload, like so:, (*5)

<?php
   "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/",
            "Eilander\\Gateway\\": "../library/eilander/gateway/src/"
        }
    },
#!json

composer dump-autoload

Controller example

<?php 

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Gateways\ProductGateway as Gateway;

class ProductController extends Controller
{
    /**
     * @var VodafoneGateway
     */
    protected $gateway;

    public function __construct(Gateway $gateway){
        $this->gateway = $gateway;
    }

    public funcion create() {
        return $this->gateway->createProduct();
    }

    ....
}

Gateway example

<?php 

namespace  App\Gateways;

use Illuminate\Http\Request;

class TestGateway {

    public function __construct(Request $request) 
    {
        $this->request = $request;
    }

    public function createProduct() 
    {
        // some validation
        ...
        // screate new product
        $product = App\Product::create($this->request->all());
    }
}

Gateway types

Laravel's eloquent (single and multiple) gateways are included. An empty elasticsearch gateway is also included, (*6)

Presenters

Presenters function as a wrapper and renderer for objects., (*7)

Fractal Presenter, (*8)

Requires Fractal., (*9)

Usage

Create a Transformer

use League\Fractal\TransformerAbstract;

class PostTransformer extends TransformerAbstract
{
    public function transform(\Post $post)
    {
        return [
            'id'      => (int) $post->id,
            'title'   => $post->title,
            'content' => $post->content
        ];
    }
}

Create a Presenter

use Eilander\Gateway\Presenter\FractalPresenter;

class PostPresenter extends FractalPresenter {

    /**
     * Prepare data to present
     *
     * @return \League\Fractal\TransformerAbstract
     */
    public function getTransformer()
    {
        return new PostTransformer();
    }
}

Enabling in your Gateway

<?php

namespace  App\Gateways\Eloquent;

use App\Gateways\Eloquent\Contracts\GebruikerGateway as Gateways;
use App\Repositories\Eloquent\Contracts\GebruikerRepository as Repository;
use App\Validators\GebruikerValidator as Validator;
use Eilander\Gateway\Eloquent\EloquentGateway;
use App\Presenters\GebruikerPresenter as Presenter;

/**
 * Class FruitRepository
 */
class GebruikerGateway extends EloquentGateway implements Gateways {
{

    ...

    public function presenter()
    {
        return Presenter::class;
    }
}

Skip Presenter defined in the gateway

Use skipPresenter before any other chaining method, (*10)

$posts = $this->gateway->skipPresenter()->all();

The Versions

09/02 2018

5.5.x-dev

5.5.9999999.9999999-dev

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

09/02 2018

5.6.x-dev

5.6.9999999.9999999-dev

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

09/02 2018

dev-master

9999999-dev

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

09/02 2018

v5.6.0

5.6.0.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

04/09 2017

v5.5.0

5.5.0.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

31/01 2017

v5.4.0

5.4.0.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

09/01 2017

v1.0.11

1.0.11.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

07/01 2017

v1.0.10

1.0.10.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

30/12 2016

v1.0.9

1.0.9.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

30/12 2016

v1.0.8

1.0.8.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

30/12 2016

v1.0.7

1.0.7.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

10/12 2016

v1.0.6

1.0.6.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

30/09 2016

v1.0.5

1.0.5.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

29/08 2016

v1.0.4

1.0.4.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

17/03 2016

v1.0.3

1.0.3.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

29/02 2016

v1.0.2

1.0.2.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

16/02 2016

v1.0.1

1.0.1.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal

16/02 2016

v1.0.0

1.0.0.0

Laravel 5 gateway generator package.

  Sources   Download

MIT

The Requires

 

by Mark Eilander

laravel gateway laravel5 fractal