uzinfo / laravel-api-generator
Laravel API generator package for creating models, migrations, controllers, services, repositories, resources and requests with advanced field definitions
Requires
- php: ^8.2
- illuminate/console: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0|^11.0
README
Laravel API Generator - bu Laravel loyihalar uchun API komponentlarini tez va oson yaratish uchun mo'ljallangan package.
🚀 Xususiyatlar
- Models - Eloquent modellari yaratish (SoftDeletes bilan)
- Migrations - Ma'lumotlar bazasi migratsiyalari (field definition bilan)
- Controllers - API kontrollerlari yaratish
- Services - Biznes logika servislari
- Repositories - Ma'lumotlar bazasi bilan ishlash layerlari
- Resources - API resurslari (bitta va collection)
- Requests - Form validatsiya klasslari
- Traits - ApiResponse va ApiRequest traitlari
- BREAD - To'liq CRUD operatsiyalari bir buyruq bilan
📦 O'rnatish
Composer orqali package'ni o'rnating:
composer require uzinfo/laravel-api-generator
Stub fayllarni publish qiling:
php artisan vendor:publish --tag=api-generator-stubs
🛠️ Foydalanish
Ayrim komponentlar yaratish
# Model yaratish php artisan make:model-api User # Model va migration birga yaratish php artisan make:model-api User --migration # Migration yaratish php artisan make:migration-api create_users_table # Controller yaratish php artisan make:controller-api UserController # Service yaratish php artisan make:service-api UserService # Repository yaratish php artisan make:repository-api UserRepository # Resource yaratish php artisan make:resource-api UserResource # Resource Collection yaratish php artisan make:resource-list-api UserResourceList # Request yaratish php artisan make:request-api StoreUserRequest
To'liq CRUD yaratish
# Barcha kerakli fayllarni bir buyruq bilan yaratish
php artisan make:bread User
Bu buyruq quyidagi fayllarni yaratadi:
app/Models/User.php
database/migrations/****_create_users_table.php
app/Http/Controllers/UserController.php
app/Services/UserService.php
app/Repositories/UserRepository.php
app/Http/Resources/User/UserResource.php
app/Http/Resources/User/UserResourceList.php
app/Http/Requests/User/StoreUserRequest.php
app/Http/Requests/User/UpdateUserRequest.php
📁 Yaratilgan fayllar strukturasi
app/
├── Models/
│ └── User.php
├── Http/
│ ├── Controllers/
│ │ └── UserController.php
│ ├── Requests/
│ │ └── User/
│ │ ├── StoreUserRequest.php
│ │ └── UpdateUserRequest.php
│ └── Resources/
│ └── User/
│ ├── UserResource.php
│ └── UserResourceList.php
├── Repositories/
│ └── UserRepository.php
├── Services/
│ └── UserService.php
database/
└── migrations/
└── 2024_07_03_120000_create_users_table.php
🎯 Traitlar
Package quyidagi traitlarni taqdim etadi:
ApiResponse Trait
use UzInfo\LaravelApiGenerator\Traits\ApiResponse; class UserController extends Controller { use ApiResponse; public function index() { return $this->replySuccess('Users retrieved successfully', $users); } }
Mavjud metodlar:
replySuccess($message, $data, $status)
- Muvaffaqiyatli javobreplyFailure($message, $data, $status)
- Xato javobreplyPaginatedData($data, $paginator)
- Pagination bilan javobreplyUnpaginatedData($data)
- Oddiy array javobreplyWithMeta($message, $data, $meta, $status)
- Meta ma'lumotlar bilanreplyRaw($response, $status)
- Raw response
ApiRequest Trait
use UzInfo\LaravelApiGenerator\Traits\ApiRequest; class StoreUserRequest extends FormRequest { use ApiRequest; protected $route_parameter = 'user'; protected $route_params = ['company' => 'company_id']; }
🔧 Konfiguratsiya
Stub fayllarni o'zgartirib, yaratilgan kodlarni loyihangizga moslashtira olasiz.
📝 Misol
User CRUD yaratish:
php artisan make:bread User
Yaratilgan controller:
<?php namespace App\Http\Controllers; use App\Http\Requests\User\StoreUserRequest; use App\Http\Requests\User\UpdateUserRequest; use App\Http\Resources\User\UserResource; use App\Http\Resources\User\UserResourceList; use App\Services\UserService; use UzInfo\LaravelApiGenerator\Traits\ApiResponse; class UserController extends Controller { use ApiResponse; public function __construct( protected UserService $service ) {} public function index() { $items = $this->service->paginate(); return $this->replyPaginatedData( UserResource::collection($items), $items ); } public function store(StoreUserRequest $request) { $item = $this->service->create($request->validated()); return $this->replySuccess( 'User created successfully', new UserResource($item) ); } public function show(string $id) { $item = $this->service->getById($id); return $this->replySuccess( 'User retrieved successfully', new UserResource($item) ); } public function update(UpdateUserRequest $request, string $id) { $item = $this->service->update($id, $request->validated()); return $this->replySuccess( 'User updated successfully', new UserResource($item) ); } public function destroy(string $id) { $this->service->delete($id); return $this->replySuccess('User deleted successfully'); } }
🤝 Hissa qo'shish
Loyihaga hissa qo'shish uchun:
- Repository'ni fork qiling
- Feature branch yarating (
git checkout -b feature/AmazingFeature
) - O'zgartirishlarni commit qiling (
git commit -m 'Add some AmazingFeature'
) - Branch'ga push qiling (
git push origin feature/AmazingFeature
) - Pull Request oching
📄 Litsenziya
Bu loyiha MIT litsenziyasi ostida chiqarilgan. Batafsil ma'lumot uchun LICENSE
faylini ko'ring.
👥 Mualliflar
- UzInfo Team - dev@uzinfo.uz
🙏 Minnatdorchilik
Laravel jamoasiga ajoyib framework uchun rahmat!