Como crear un Trait en Laravel
Un trait sirve principalmente para reusar un código que ha está escrito en la aplicación web.
Para ello vamos a crear una carpeta Traits para ubicar todos los trait, en el raíz del proyecto.
Y como ejemplo crear un fichero token.php, al cual se llama tanto desde el controlador de login como desde el controlador de registro.
app\Traits\token.php
Definir un trait
Lo primero es iniciar el código con la apertura de una etiqueta php.
Segundo indicar el namespace donde se va a utilizar el trait.
Tercero crear la función o funciones a las que se va a acceder, además de las librerías a usar en la función.
<?php
namespace App\Traits;
use Illuminate\Support\Facades\Http;
trait Token{
public function getAccessToken($user, $service){
$response = Http::withHeaders([
'Accept' => 'Application/json'
])->post(env('APP_URL_API') . 'oauth/token', [
'grant_type' => 'password',
'client_id' => config('services.apiamzn.client_id'),
'client_secret' => config('services.apiamzn.client_secret'),
'username' => request('email'),
'password' => request('password'),
]);
$access_token = $response->json();
$user->accessToken()->create([
'service_id' => $service['data']['id'],
'access_token' => $access_token['access_token'],
'refresh_token' => $access_token['refresh_token'],
'expires_at' => now()->addSecond($access_token['expires_in'])
]);
}
}
Utilizar el Trait generado
El trait anterior puede utilizarse en cualquer parte del proyecto, y en este ejemplo se va a utilizar en los controladores de login y registro de usuarios.
app\Http\Controllers\Auth\AuthenticatedSessionController.php
app\Http\Controllers\Auth\RegisteredUserController.php
Importar el trait, ademas de invocarlo dentro de la clase y llamar al método definido.
...
use App\Traits\Token;
class RegisteredUserController extends Controller
{
use b;
...
$this->getAccessToken($user, $service);
...
Puedes seguir viendo cómo crear un cliente para API RESTful con laravel.
Deja una respuesta