Status message

Maintenant, vous regardez: Traits use in laravel/lumen for standard response

Traits use in laravel/lumen for standard response

Traits are a mechanism for code reuse in single inheritance languages such as PHP. A Trait is intended to reduce some limitations of single inheritance by enabling a developer to reuse sets of methods freely in several independent classes living in different class hierarchies. The semantics of the combination of Traits and classes is defined in a way which reduces complexity, and avoids the typical problems associated with multiple inheritance and Mixins.

A Trait is similar to a class, but only intended to group functionality in a fine-grained and consistent way. It is not possible to instantiate a Trait on its own. It is an addition to traditional inheritance and enables horizontal composition of behavior; that is, the application of class members without requiring inheritance

Les traits sont un mécanisme de réutilisation de code dans un langage à héritage simple tel que PHP. Un trait tente de réduire certaines limites de l'héritage simple, en autorisant le développeur à réutiliser un certain nombre de méthodes dans des classes indépendantes. La sémantique entre les classes et les traits réduit la complexité et évite les problèmes typiques de l'héritage multiple et des Mixins.

Un trait est semblable à une classe, mais il ne sert qu'à grouper des fonctionnalités d'une manière intéressante. Il n'est pas possible d'instancier un Trait en lui-même. C'est un ajout à l'héritage traditionnel, qui autorise la composition horizontale de comportements, c'est à dire l'utilisation de méthodes de classe sans besoin d'héritage.

Let's see how to use traits in laravel or lumen for standard response

1) Create ApiResponser.php in app/Traits/ folder

  1. namespace App\Traits;
  2. use Illuminate\Http\Response;
  3.  
  4. trait ApiResonser
  5. {
  6. /**
  7.   * Build success response
  8.   * @param string|array $data
  9.   * @param int $code
  10.   * @return Illuminate\Http\JsonResponse
  11.   */
  12. public function successResponse($data, $code = Response::HTTP_OK ){
  13. return response()->json(['data' => $data], $code);
  14. }
  15.  
  16. /**
  17.   * Build error response
  18.   * @param string|array $message
  19.   * @param int $code
  20.   * @return Illuminate\Http\JsonResponse
  21.   */
  22. public function errorResponse($message, $code ){
  23. return response()->json( ['error' => $message, 'code' => $code], $code);
  24. }
  25.  
  26. }

2) Using it in another controller

  1. namespace App\Http\Controllers;
  2.  
  3. use Illuminate\Http\Request;
  4. use App\Traits\ApiResponser;
  5.  
  6. class UserController extends Controller
  7. {
  8. use ApiResponser;
  9.  
  10. public function index(){
  11. $users = User::all();
  12. return $this->successResponse($users);
  13. }
  14.  
  15. }