qusaihomadi/laravel-architect

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

Maintainers

Package info

github.com/QusayHomady/laravel-architect

pkg:composer/qusaihomadi/laravel-architect

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2026-07-14 02:32 UTC

This package is auto-updated.

Last update: 2026-07-25 00:21:38 UTC


README

باكج مميز واحترافي من تطوير Qusai Homadi يضيف لك أوامر Artisan ذكية لتوليد بنية برمجية متكاملة ونظيفة تناسب نمط DDD والنظام المعماري متعدد الطبقات: Repository + Interface/Abstract Class, Service, DTO, Action بضغطة زر.

🚀 طريقة التثبيت (Installation)

بما أن الباكج منشورة بشكل رسمي على Packagist، لتثبيتها في أي مشروع جديد استخدم أمر composer require:

composer require qusaihomadi/laravel-architect

Note

استخدم دائماً composer require للتثبيت أول مرة في مشروع جديد. (أمر composer update يُستخدم فقط لاحقاً للتحديث عند صدور إصدارات جديدة من الباكج).

Tip

الباكج تدعم ميزة الـ Package Auto-Discovery في Laravel 11 و 12 و 13، لذلك سيتم تسجيلها وتفعيل الأوامر تلقائياً بمجرد التنزيل!

خيارات النشر والتخصيص (اختياري):

  • نشر ملف الإعدادات للتحكم بالمسارات والـ Namespaces:

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

    سيتم إنشاء ملف الإعدادات في config/laravel-architect.php. يمكنك تعديله لتخصيص مجلدات الحفظ حسب هيكلة مشروعك.

  • نشر ملفات الـ stubs لتعديل قوالب الأكواد المولدة:

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

    بعد النشر، ستجد القوالب في stubs/vendor/laravel-architect/ لتتمكن من التعديل عليها وتخصيصها.

🛠️ الأوامر والاختصارات المتوفرة (Commands & Aliases)

تسهيلاً للكتابة، يمكنك استدعاء الأوامر بأسمائها الكاملة أو بالاختصارات المخصصة:

الأمر الكامل الاختصارات المتاحة الوصف
php artisan make:repository make:repo | make:rep توليد الـ Repository + الكلاس الأب الخاص به
php artisan make:service توليد كلاس الـ Service مع حقن الـ Repository تلقائياً
php artisan make:dto توليد كلاس الـ DTO (ذكي ومبني على الموديل)
php artisan make:action توليد كلاس Action مخصص (Single Action)
php artisan make:module توليد الوحدة كاملة لكيان معين (كل الطبقات معاً) بأمر واحد

🌟 الميزات الجبارة والمتقدمة (Advanced Features)

1️⃣ التوليد التفاعلي للمستودعات (Interface vs Abstract Class)

عند تشغيل أمر توليد المستودع (مثلاً: php artisan make:repo Post)، سيسألك المعالج تفاعلياً في الـ Terminal عن النمط الذي تفضله:

  • Interface-based: توليد Interface وكلاس Repository يقوم بتنفيذه.
  • Abstract Class-based: توليد كلاس تجريدي (Abstract Class) وكلاس Repository يرث منه.

Tip

ميزة الذكاء في السيرفس: عند توليد الـ Service لاحقاً، ستقوم الباكج تلقائياً بالتحقق مما إذا كان المستودع عبارة عن Interface أو Abstract Class، وتقوم بحقن الكلاس الأب الصحيح تلقائياً في Constructor الخاص بالسيرفس!

2️⃣ الربط التلقائي الحديث لـ Laravel 11 (#[Bind] Attribute)

إذا اخترت نمط الـ Interface أثناء توليد المستودع، تقوم الباكج تلقائياً باستدعاء الخاصية الذكية لـ Laravel 11 ووضعها فوق واجهة المستودع بالشكل التالي:

use Illuminate\Container\Attributes\Bind;
use App\Repositories\PostRepository;

#[Bind(PostRepository::class)]
interface PostRepositoryInterface
{
    // ...
}

بفضل هذا الـ Attribute، سيقوم Laravel بربط الواجهة بـ Repository الخاص بها أوتوماتيكياً بمجرد حقنها في أي كود، دون الحاجة لكتابة أي كود تسجيل يدوياً داخل ملف AppServiceProvider!

3️⃣ توليد الـ DTO الديناميكي المعتمد على الموديل (Dynamic DTOs)

عند توليد DTO لكيان ما (مثال: php artisan make:dto User)، سيبحث المولد عن موديل User في مشروعك، ويقوم بـ:

  • قراءة الأعمدة المعرفة في مصفوفة الحقول القابلة للتعبئة $fillable.

  • استنتاج نوع كل خاصية تلقائياً من مصفوفة الـ $casts (مثل boolean -> bool, datetime -> Carbon, إلخ) وجعلها nullable للأمان.

  • تحويل أسماء الخصائص لـ camelCase لتناسب المعايير النظيفة.

  • إنشاء دوال تحويل مساعدة كاملة تلقائياً: fromModel(), fromArray(), fromRequest(), toArray().

  • ملاحظة: في حال عدم وجود موديل للكيان بعد، سيتراجع المولد تلقائياً وينشئ كلاس DTO افتراضي نظيف لتتمكن من تعبئته بنفسك دون أي مشاكل أو توقف.

4️⃣ دعم المسارات والمجلدات الفرعية (Subdirectories Support)

الأوامر تدعم توليد الملفات داخل مجلدات فرعية مع تعديل الـ namespaces بشكل سليم وآمن تماماً، مثال:

php artisan make:repo Admin/Post
php artisan make:service User/AuthService

سيتم تنظيم الملفات برمجياً وإنشاء مجلدات Admin و User تلقائياً مع ضبط الـ namespaces المطابق لهيكلة المجلدات.

📝 رخصة الباكج (License)

تخضع هذه الباكج لرخصة MIT المفتوحة والمتاحة للاستخدام والتطوير المجاني.