PHPackages                             qusaihomadi/laravel-architect - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. qusaihomadi/laravel-architect

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

qusaihomadi/laravel-architect
=============================

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

v1.0.1(1mo ago)01MITPHPPHP ^8.1

Since Jul 7Pushed 1mo agoCompare

[ Source](https://github.com/QusayHomady/laravel-architect)[ Packagist](https://packagist.org/packages/qusaihomadi/laravel-architect)[ RSS](/packages/qusaihomadi-laravel-architect/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (6)Versions (3)Used By (0)

Laravel Architect — Action / Service / DTO / Repository
=======================================================

[](#laravel-architect--action--service--dto--repository)

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

---

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

[](#-طريقة-التثبيت-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 &amp; Aliases)
--------------------------------------------------------

[](#️-الأوامر-والاختصارات-المتوفرة-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)
-----------------------------------------------

[](#-الميزات-الجبارة-والمتقدمة-advanced-features)

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

[](#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)

[](#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)

[](#3️⃣-توليد-الـ-dto-الديناميكي-المعتمد-على-الموديل-dynamic-dtos)

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

- قراءة الأعمدة المعرفة في مصفوفة الحقول القابلة للتعبئة `$fillable`.
- استنتاج نوع كل خاصية تلقائياً من مصفوفة الـ `$casts` (مثل `boolean` -&gt; `bool`, `datetime` -&gt; `Carbon`, إلخ) وجعلها nullable للأمان.
- تحويل أسماء الخصائص لـ `camelCase` لتناسب المعايير النظيفة.
- إنشاء دوال تحويل مساعدة كاملة تلقائياً: `fromModel()`, `fromArray()`, `fromRequest()`, `toArray()`.
- **ملاحظة:** في حال عدم وجود موديل للكيان بعد، سيتراجع المولد تلقائياً وينشئ كلاس DTO افتراضي نظيف لتتمكن من تعبئته بنفسك دون أي مشاكل أو توقف.

---

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

[](#4️⃣-دعم-المسارات-والمجلدات-الفرعية-subdirectories-support)

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

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

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

---

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

[](#-رخصة-الباكج-license)

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

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance92

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~6 days

Total

2

Last Release

45d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a30eb2449c2ad8deaa3ee1f224313b8d1958a9eb1b8d667774187991ed3eb579?d=identicon)[QusayHomady](/maintainers/QusayHomady)

---

Top Contributors

[![QusayHomady](https://avatars.githubusercontent.com/u/133170580?v=4)](https://github.com/QusayHomady "QusayHomady (7 commits)")

### Embed Badge

![Health badge](/badges/qusaihomadi-laravel-architect/health.svg)

```
[![Health](https://phpackages.com/badges/qusaihomadi-laravel-architect/health.svg)](https://phpackages.com/packages/qusaihomadi-laravel-architect)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

1.1k4.6M342](/packages/laravel-ai)[illuminate/queue

The Illuminate Queue package.

20433.0M1.9k](/packages/illuminate-queue)[mike-bronner/laravel-model-caching

Automatic caching for Eloquent models.

2.4k161.4k2](/packages/mike-bronner-laravel-model-caching)[forjedio/inertia-table

Backend-driven dynamic tables for Laravel + Inertia.js

272.0k](/packages/forjedio-inertia-table)[fumeapp/modeltyper

Generate TypeScript interfaces from Laravel Models

199336.0k](/packages/fumeapp-modeltyper)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

265.2k](/packages/aedart-athenaeum)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
