marioneto / lara-toolkit
Um Pacote de recursos para apoiar aplicações Laravel
Installs: 229
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/marioneto/lara-toolkit
Requires
- php: >=8.0
- illuminate/console: ^8.0|^9.0|^10.0
- illuminate/database: ^8.0|^9.0|^10.0
- illuminate/http: ^8.0|^9.0|^10.0
- illuminate/support: ^8.0|^9.0|^10.0
README
LaraToolkit é uma biblioteca para Laravel que fornece um conjunto de ferramentas e abstrações para agilizar o desenvolvimento de aplicações. Com comandos personalizados, traits úteis e classes de abstração, o LaraToolkit ajuda a padronizar e simplificar tarefas comuns no desenvolvimento com Laravel.
Índice
Instalação
Para instalar o LaraToolkit, adicione o pacote ao seu projeto Laravel usando o Composer:
composer require marioneto/lara-toolkit
Requisitos
- PHP: >= 8.0
- Laravel: 8.x, 9.x ou 10.x
Funcionalidades
Comandos Artisan Personalizados
O LaraToolkit adiciona comandos personalizados ao Artisan para gerar classes de Service e Repository de forma padronizada.
make:service
Gera uma classe de Service organizada por domínio.
Sintaxe:
php artisan make:service {nome} {dominio}
{nome}: O nome do Service a ser criado.{dominio}: O domínio ao qual o Service pertence.
Exemplo:
php artisan make:service Create User
Isso criará a classe CreateService em app/Services/User/CreateService.php.
make:repository
Gera uma classe de Repository que estende AbstractRepository.
Sintaxe:
php artisan make:repository {nome}
{nome}: O nome Model para o Repository a ser criado.
Exemplo:
php artisan make:repository User
Isso criará a classe UserRepository em app/Repositories/UserRepository.php.
Trait ApiControllerTrait
A trait ApiControllerTrait fornece métodos para padronizar as respostas de APIs em suas controllers.
returnSuccess($data, string $message = null, int $statusCode = 200): Retorna uma resposta JSON de sucesso.returnError(string $message, Throwable $exception = null, int $statusCode = 500): Retorna uma resposta JSON de erro, registrando a exceção no log sem usar facades ou helpers.
Classe AbstractRepository
A classe AbstractRepository é uma abstração que fornece métodos comuns para interagir com modelos Eloquent, como:
getAll()getById($id)create(array $attributes)update($id, array $attributes)delete($id)
Como Utilizar
Gerando um Service
-
Execute o comando
make:service:php artisan make:service NomeDoService Dominio
Exemplo:
php artisan make:service Create User
-
O Service será criado em
app/Services/{Dominio}/{NomeDoService}Service.php. -
Implemente a lógica necessária no método
execute()da classe gerada.
Gerando um Repository
-
Execute o comando
make:repository:php artisan make:repository NomeDoModel
Exemplo:
php artisan make:repository User
-
O Repository será criado em
app/Repositories/{NomeDoModel}Repository.php. -
No Repository gerado, o método
model()já está definido para usar o modelo especificado.
Usando a Trait ApiControllerTrait
-
Na sua controller, importe e utilize a trait:
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use LaraToolkit\Traits\ApiControllerTrait; class UserController extends Controller { use ApiControllerTrait; // ... }
-
Utilize os métodos
returnSuccessereturnErrornas suas ações:public function index() { try { $users = $this->userRepository->getAll(); return $this->returnSuccess($users, 'Usuários obtidos com sucesso.'); } catch (\Exception $exception) { return $this->returnError('Erro ao obter usuários.', $exception); } }
Usnado Exceções De Negócio
Caso você precise gerar uma excessão onde deseja que a mensagem seja retornada no JSON de erro, você pode usar a excessão BusinessException.
if ($data['age'] < 18) { throw new BusinessException('O usuário deve ter pelo menos 18 anos.'); }
Se você estiver usando a trait ApiControllerTrait, você pode usar o método returnError para retornar a mensagem da BusinessException no JSON de erro, suprimindo a mensagem padrão.
Contribuição
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests no repositório do GitHub.
Licença
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter mais informações.