Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nbpalomino/db812978aff4b337b66909d6595ee028 to your computer and use it in GitHub Desktop.
Save nbpalomino/db812978aff4b337b66909d6595ee028 to your computer and use it in GitHub Desktop.
ADR out of the box for Brandon
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Collection;
use Illuminate\Database\Connection;
use Illuminate\Contracts\Routing\ResponseFactory;
/**
* Resolve an action out of the container and call it, injecting method dependencies.
*/
function marshal($action)
{
return App::call([App::make($action), 'handle']);
}
/**
* A repository...
*/
class PostRepository
{
protected $connection;
public function __construct(Connection $connection)
{
$this->connection = $connection;
}
public function all()
{
return $this->connection->table('posts')->get();
}
}
/**
* The responder...
*/
class ListPostsResponder
{
protected $response;
public function __construct(ResponseFactory $response)
{
$this->response = $response;
}
public function handle(Collection $data)
{
if (count($data) === 0) {
return $this->response->make('Not found.', 404);
} else {
return $this->response->view('posts.index', ['posts' => $data->all()]);
}
}
}
/**
* The action...
*/
class ListPosts
{
public function handle(Request $request,
ListPostsResponder $responder,
PostRepository $posts)
{
return $responder->handle(
$posts->all()
);
}
}
/**
* The route...
*/
$router->get('/posts', function () {
return marshal(ListPosts::class);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment