承接 qusaihomadi/laravel-architect 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

qusaihomadi/laravel-architect

Composer 安装命令:

composer require qusaihomadi/laravel-architect

包简介

Artisan generators for Action + Service + DTO + Repository pattern in Laravel

README 文档

README

باكج بسيط ومحترف من تطوير Qusai Homadi يضيف لك أوامر Artisan جاهزة لتوليد بنية برمجية متكاملة ونظيفة: Repository + Interface, Service, DTO, Action بضغطة زر، بدل ما تكتبها يدوي كل مرة.

طريقة التثبيت (بما إنها باكج محلي وليست على Packagist حالياً)

1) انسخ مجلد الباكج داخل مشروع Laravel

انسخ مجلد laravel-generators كامل إلى داخل مشروعك، مثلاً في:

your-laravel-project/packages/qusaihomadi/laravel-architect

2) عرّف الباكج في composer.json الخاص بمشروعك

أضف قسم repositories وقسم require:

"repositories": [
    {
        "type": "path",
        "url": "packages/qusaihomadi/laravel-architect"
    }
],
"require": {
    "qusaihomadi/laravel-architect": "*"
}

3) ثبّت الباكج

composer update qusaihomadi/laravel-architect

إذا تستخدم Laravel 11+ مع Package Discovery، ما تحتاج تسجل الـ Service Provider يدوي. إذا ما اشتغل التسجيل التلقائي، ضيفه يدوي في bootstrap/providers.php (Laravel 11) أو config/app.php (Laravel 10 وأقل):

QusaiHomadi\LaravelArchitect\GeneratorsServiceProvider::class,

4) (اختياري) انشر ملفات الـ stubs عشان تعدل عليها حسب ستايلك

php artisan vendor:publish --tag=laravel-architect-stubs

بعدها راح تلقاها في: stubs/vendor/laravel-architect/*.stub

5) (اختياري) انشر ملف الإعدادات للتحكم بالمسارات والـ namespaces

php artisan vendor:publish --tag=laravel-architect-config

بعدها راح تلقاه في: config/laravel-architect.php — عدّل فيه أي namespace أو مسار مجلد يناسب هيكلة مشروعك.

الأوامر المتوفرة

كل أمر يقبل الاسم بصيغتين: User أو UserRepository (ونفس الشي للباقي)، يعني تقدر تكتب بالضبط:

php artisan make:repository UserRepository

1) توليد كل طبقة لحالها

php artisan make:repository User
php artisan make:service User
php artisan make:dto User
php artisan make:action CreateUserAction --service=UserService --dto=UserDTO

2) توليد الكل مع بعض — عندك طريقتين

الطريقة أ: أضف --all على أي أمر من الأربعة وهو تلقائياً يكمل توليد باقي الطبقات لنفس الكيان:

php artisan make:repository UserRepository --all
# يولد: Repository + Interface + Service + DTO + Action لكيان User بأمر واحد فقط

php artisan make:service UserService --all
php artisan make:dto UserDTO --all
php artisan make:action CreateUserAction --all

الطريقة ب: أمر مختصر مخصص للوحدة الكاملة

php artisan make:module User

كلا الطريقتين تنتج نفس الملفات بالضبط — استخدم اللي يريحك أكثر.

خيار --force

لو الملف موجود مسبقاً، الأمر بشكل افتراضي يتجاهله ويطبع تحذير حتى ما يمسح شغلك بالغلط. لو تبي تستبدل الملفات الموجودة:

php artisan make:repository User --all --force

الملفات الناتجة

app/
├── Repositories/
│   ├── Contracts/
│   │   └── UserRepositoryInterface.php
│   └── UserRepository.php
├── Services/
│   └── UserService.php
├── DTOs/
│   └── UserDTO.php
└── Actions/
    └── CreateUserAction.php

خطوة مهمة بعد التوليد: ربط الـ Interface بالتطبيق الفعلي

في app/Providers/AppServiceProvider.php (أو Provider خاص بالريبوزيتوريز):

public function register(): void
{
    $this->app->bind(
        \App\Repositories\Contracts\UserRepositoryInterface::class,
        \App\Repositories\UserRepository::class
    );
}

التخصيص

كل الملفات المولّدة هي نقطة بداية بسيطة (CRUD أساسي). عدّل الـ stubs الموجودة في مجلد stubs/ (أو بعد النشر في stubs/vendor/laravel-architect/) لتضيف منطقك الخاص، Validation، Events، إلخ.

Dynamic DTO Generation (توليد الـ DTO التلقائي من الموديل)

تم دمج محرك توليد DTO متقدم وذكي جداً! عند تشغيل أمر توليد الـ DTO:

php artisan make:dto User

سيبحث المولد تلقائياً عن موديل User في مشروعك، ويقوم بـ:

  1. قراءة الحقول المعرفة في مصفوفة $fillable داخل الموديل.
  2. استنتاج أنواع الحقول (Types) تلقائياً بناءً على مصفوفة الـ $casts (مثل boolean -> bool, datetime -> Carbon, إلخ).
  3. تحويل أسماء الحقول لـ camelCase كخصائص للقراءة فقط (Readonly Properties).
  4. إنشاء دوال مساعدة تلقائياً للتحويل والتوليد:
    • fromModel()
    • fromArray()
    • fromRequest()
    • toArray()

Note

إذا لم يتم العثور على الموديل في مشروعك، لا تقلق! سيقوم المولد تلقائياً بالتراجع (Fallback) وإنشاء كلاس DTO افتراضي فارغ وبسيط لتتمكن من تعبئته بنفسك.

خيارات التحكم بالـ DTO في ملف الإعدادات:

في ملف config/laravel-architect.php يمكنك تفعيل أو إلغاء تفعيل الميزات الإضافية للـ DTO:

    'dto' => [
        'namespace' => 'App\\DTOs',
        'path' => app_path('DTOs'),
        'readonly' => true, // استخدام readonly للمتغيرات (PHP 8.1+)
        'generate_from_model' => true, // توليد دالة fromModel
        'generate_from_array' => true, // توليد دالة fromArray
        'generate_from_request' => true, // توليد دالة fromRequest
        'generate_to_array' => true, // توليد دالة toArray
    ],

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 3
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固