orangesix/php
@Orangesix/PHP
Uma biblioteca PHP integrada ao Laravel para padronizar CRUD, services, repositories, resources e ACL.
📂 Estrutura do pacote
🛡️ Acl
Módulo responsável pelo gerenciamento de permissões, perfis de usuário, middleware, facade e diretivas Blade.
🎮 Controller
Classes base para controllers Laravel, com suporte à resolução automática de services.
🧮 Enum
Enums compartilhados pelo pacote.
⚠️ Exceptions
Classes de exceção personalizadas para respostas de API, mensagens e validação de campos.
🔧 Function
Helpers globais carregados pelo autoload do Composer.
🌐 HTTP
Resources para transformação e padronização de respostas JSON.
🗃️ Models
Traits e recursos centrais para integração com models Eloquent.
🏭 Repository
Camada de acesso a dados e consultas. O pacote usa a convenção {Nome}Repository e pode resolver repositories automaticamente.
💼 Service
Camada de regra de negócio. O pacote usa a convenção {Nome}Service e pode resolver services automaticamente.
📦 Instalação do pacote
Enquanto o pacote não possuir auto-discovery configurado no composer.json, registre o provider geral manualmente no projeto Laravel consumidor.
🚀 Laravel 11, 12 e 13
Adicione o provider geral em bootstrap/providers.php:
<?php
use App\Providers\AppServiceProvider;
use Orangesix\OrangesixServiceProvider;
return [
AppServiceProvider::class,
OrangesixServiceProvider::class,
];
Depois limpe os caches da aplicação:
php artisan optimize:clear
⚙️ Configuração geral
Publique o arquivo de configuração geral do pacote:
php artisan vendor:publish --tag=orangesix-config
Isso cria:
config/orangesix.php
Esse arquivo controla os caminhos usados pela resolução automática de services, repositories e models:
'service_path' => [
app_path('Service'),
app_path('Services'),
],
'repository_path' => [
app_path('Repository'),
app_path('Repositories'),
],
'model_path' => [
app_path('Model'),
app_path('Models'),
],
🧱 Convenção de CRUD
O pacote segue a convenção de nomes adotada nos projetos da empresa:
ProdutoModel
ProdutoRepository
ProdutoService
ProdutoController
Para CRUD padrão, a intenção é que o Model seja a classe mínima necessária. Quando Service ou Repository não existirem, o pacote pode usar sua infraestrutura interna para resolver o fluxo padrão a partir do model.
Crie Repository quando precisar personalizar consultas. Crie Service quando precisar personalizar regra de negócio.
🛡️ Módulo ACL
O ACL possui um provider separado do provider geral do pacote. Registre-o apenas nos projetos que usam o módulo de permissões.
🔌 Provider do ACL
Adicione o provider em bootstrap/providers.php:
<?php
use App\Providers\AppServiceProvider;
use Orangesix\OrangesixServiceProvider;
use Orangesix\Acl\AclServiceProvider;
return [
AppServiceProvider::class,
OrangesixServiceProvider::class,
AclServiceProvider::class,
];
Depois limpe os caches da aplicação:
php artisan optimize:clear
📤 Publicação dos arquivos do ACL
Publique os arquivos específicos do ACL:
php artisan vendor:publish --tag=acl-config
php artisan vendor:publish --tag=acl-migrations
php artisan vendor:publish --tag=acl-seeders
Isso cria:
config/acl.php- migrations do ACL em
database/migrations AclSeeder.phpemdatabase/seeders
Em seguida, rode as migrations e o seeder:
php artisan migrate
php artisan db:seed --class=AclSeeder
✅ Validação rápida do ACL
Para confirmar se o provider do ACL foi registrado corretamente:
php artisan tinker
app()->bound('acl');
class_exists(\Orangesix\Acl\Facades\Acl::class);
Ambos devem retornar true.
Related Packages
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 4.0.2 | ^8.3 | ^11.0 || | MIT | |
| 4.0.1 | ^8.3 | ^11.0 || | MIT | |
| 3.2.0 | ^8.3 | ^11.0 || | MIT | |
| 3.1.0 | ^8.3 | ^12.0 | MIT | |
| 3.0.5 | ^8.3 | ^12.0 | MIT | |
| 3.0.4 | ^8.3 | ^12.0 | MIT | |
| 3.0.3 | ^8.3 | ^12.0 | MIT | |
| 3.0.2 | ^8.3 | ^12.0 | MIT | |
| 3.0.1 | ^8.3 | ^12.0 | MIT | |
| 3.0.0 | ^8.3 | ^12.0 | MIT | |
| 2.0.12 | ^8.1 | MIT | ||
| 2.0.11 | ^8.1 | MIT | ||
| 2.0.10 | ^8.1 | MIT | ||
| 2.0.9 | ^8.1 | MIT | ||
| 2.0.8 | ^8.1 | MIT | ||
| 2.0.7 | ^8.1 | MIT | ||
| 2.0.6 | ^8.1 | MIT | ||
| 2.0.5 | ^8.1 | MIT | ||
| 2.0.4 | ^8.1 | MIT | ||
| 2.0.3 | ^8.1 | MIT | ||
| 2.0.2 | ^8.1 | MIT | ||
| 2.0.1 | ^8.1 | MIT | ||
| 2.0.0 | ^8.1 | MIT | ||
| 1.0.3 | ^8.1 | MIT | ||
| 1.0.2 | ^8.1 | MIT | ||
| 1.0.1 | ^8.1 | MIT | ||
| 1.0.0 | ^8.1 | MIT |