PHP code example of nilportugues / laravel5-jsend
1. Go to this page and download the library: Download nilportugues/laravel5-jsend library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
nilportugues / laravel5-jsend example snippets
'providers' => [
//...
\NilPortugues\Laravel5\JSend\Laravel5JSendServiceProvider::class,
],
$app->register(\NilPortugues\Laravel5\JSend\Laravel5JSendServiceProvider::class);
$app->configure('jsend');
$app->withFacades();
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'),
]
),
]
);
//config/jsend.php
return [
[
'class' => 'Acme\Domain\Dummy\Post',
'alias' => 'Message',
'aliased_properties' => [
'author' => 'author',
'title' => 'headline',
'content' => 'body',
],
'hide_properties' => [
],
'id_properties' => [
'postId',
],
'urls' => [
'self' => ['name' => 'get_post'], //named route
'comments' => ['name' => 'get_post_comments'], //named route
],
],
[
'class' => 'Acme\Domain\Dummy\ValueObject\PostId',
'alias' => '',
'aliased_properties' => [],
'hide_properties' => [],
'id_properties' => [
'postId',
],
'urls' => [
'self' => ['name' => 'get_post'], //named route
],
],
[
'class' => 'Acme\Domain\Dummy\User',
'alias' => '',
'aliased_properties' => [],
'hide_properties' => [],
'id_properties' => [
'userId',
],
'urls' => [
'self' => ['name' => 'get_user'], //named route
'friends' => ['name' => 'get_user_friends'], //named route
'comments' => ['name' => 'get_user_comments'], //named route
],
],
[
'class' => 'Acme\Domain\Dummy\ValueObject\UserId',
'alias' => '',
'aliased_properties' => [],
'hide_properties' => [],
'id_properties' => [
'userId',
],
'urls' => [
'self' => ['name' => 'get_user'], //named route
'friends' => ['name' => 'get_user_friends'], //named route
'comments' => ['name' => 'get_user_comments'], //named route
],
],
[
'class' => 'Acme\Domain\Dummy\Comment',
'alias' => '',
'aliased_properties' => [],
'hide_properties' => [],
'id_properties' => [
'commentId',
],
'urls' => [
'self' => ['name' => 'get_comment'], //named route
],
],
[
'class' => 'Acme\Domain\Dummy\ValueObject\CommentId',
'alias' => '',
'aliased_properties' => [],
'hide_properties' => [],
'id_properties' => [
'commentId',
],
'urls' => [
'self' => ['name' => get_comment'], //named route
],
],
];
Route::get(
'/post/{postId}',
['as' => 'get_post', 'uses' => 'PostController@getPostAction']
);
Route::get(
'/post/{postId}/comments',
['as' => 'get_post_comments', 'uses' => 'CommentsController@getPostCommentsAction']
);
//...
$app->get(
'/post/{postId}',
['as' => 'get_post', 'uses' => 'PostController@getPostAction']
);
$app->get(
'/post/{postId}/comments',
['as' => 'get_post_comments', 'uses' => 'CommentsController@getPostCommentsAction']
);
//...
namespace App\Http\Controllers;
use Acme\Domain\Dummy\PostRepository;
use NilPortugues\Laravel5\JSend\JSendSerializer;
use NilPortugues\Laravel5\JSend\JSendResponseTrait;
class PostController extends \Laravel\Lumen\Routing\Controller
{
use JSendResponseTrait;
/**
* @var PostRepository
*/
private $postRepository;
/**
* @var JSendSerializer
*/
private $serializer;
/**
* @param PostRepository $postRepository
* @param JSendSerializer $jSendSerializer
*/
public function __construct(PostRepository $postRepository, JSendSerializer $jSendSerializer)
{
$this->postRepository = $postRepository;
$this->serializer = $jSendSerializer;
}
/**
* @param int $postId
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function getPostAction($postId)
{
$post = $this->postRepository->findById($postId);
/** @var \NilPortugues\Api\JSend\JSendTransformer $transformer */
$transformer = $this->serializer->getTransformer();
$transformer->setSelfUrl(route('get_post', ['postId' => $postId]));
$transformer->setNextUrl(route('get_post', ['postId' => $postId+1]));
return $this->response($this->serializer->serialize($post));
}
}
private function errorResponse($message, $code = 500, $data = null);
private function failResponse($json);
private function response($json);