وقّف نسخ الكود! اتعلم تستخدم Traits في Laravel صح

يوليو 1, 2025

🚫 وقّف نسخ الكود!

لو عندك نفس المنطق في كذا Model أو Controller زي Slug أو Logging، Traits في Laravel هتوفر عليك تعب الكتابة والتكرار.

1. إيه هو Trait؟

Trait ببساطة باكج مكتوب فيها دوال reusable تقدر تزودها لأي كلاس.

trait Sluggable {
  public function createSlug(string $text): string {
    return \Illuminate\Support\Str::slug($text, '-');
  }
}

2. ازاي تعمل Trait

اكتب الأمر ده:

php artisan make:trait Traits/Sluggable

ده هيطلعلك ملف في app/Traits/Sluggable.php بداخله الكود اللي فوق.

3. ازاي تستخدمها في Model

namespace App\Models;

use App\Traits\Sluggable;
use Illuminate\Database\Eloquent\Model;

class Product extends Model {
  use Sluggable;

  protected static function booted() {
    static::creating(fn($p) => $p->slug = $p->createSlug($p->name));
  }
}

4. امتى تستخدم Traits؟

  • ✅ لو عندك نفس الدوال في كذا كلاس
  • ✅ عاوز تبعد عن التعقيد بتاع الـ inheritance

5. أمثلة في الواقع

  • HasUuid – يضيف UUID تلقائي على كل Model
  • LogsActivity – يسجل أفعال المستخدمين
  • ApiResponse – يوحّد شكل الردود في JSON

6. امتى مش تستخدم Traits؟

  • ❌ لو المنطق معقد وعاوز تعتمد على Dependency Injection
  • ❌ لما Trait يبقى فيه دوال كتير مش مترابطة
  • ❌ لو Trait مستخدمة من كلاس واحد بس
  • ❌ لو الكود هو business logic أساسي – استخدم Service Class

الخاتمة

Traits حاجة قوية جدًا لإعادة الاستخدام والحفاظ على نظافة الأكواد—لو استخدمتها صح. المرة الجاية قبل ما تعمل copy + paste إسأل نفسك: "ممكن دي تبقى Trait؟"

المدونة

إزاي OAuth بيشتغل

يونيو 29, 2025

إزاي OAuth بيشتغل؟ OAuth هو بروتوكول بيخلّي التطبيقات تقدر تدخل على بياناتك بطريقة آمنة من غير ما تدّيهم الباسورد بتاعك. زي مثلًا لو حبيت تطبيق ينشر...

وقّف نسخ الكود! اتعلم تستخدم Traits في Laravel صح

يوليو 01, 2025

🚫 وقّف نسخ الكود! لو عندك نفس المنطق في كذا Model أو Controller زي Slug أو Logging، Traits في Laravel هتوفر عليك تعب الكتابة والتكرار. 1. إيه هو...

لارافيل 12: كل جديد من 12.0 لـ 12.19 – دليل شامل

يوليو 20, 2025

🔧 1. لارافيل 12.0 – ستارتر كيتس وتعديلات أساسية إصدار 12.0 جاب Starter Kits جاهزة للـ React، Vue، Livewire، وكمان دمج مع WorkOS AuthKit،...

حقق أداءً أعلى لتقارير البيانات الضخمة باستخدام نظام (Queues)

يوليو 07, 2025

إزاي نعمل كاش لتقارير بفترة زمنية ثابتة إزاي نولّد تقارير ضخمة في الخلفية باستخدام الـ Job Queues 1. 🧠 كاش للتقارير بفترة زمنية ثابتة لو ع...

ألوان في CSS - شرح مبسّط

يونيو 26, 2025

ألوان في CSS - شرح مبسّط النهارده هنتكلم عن الألوان في CSS: ازاي بنحددها، وخصوصًا الطرق الحديثة زي lab() وoklch(). 1. يعني إيه لون؟ مفيش حاجة اسم...

استكشف أقوى تقنيات Laravel الحديثة: Inertia.js، View Creators، وHLS خطوة بخطوة

يوليو 27, 2025

أدوات قوية تقدر تستخدمها لتطوير تطبيقات Laravel بشكل احترافي: Inertia.js v2، وView Creators، وحزمة Laravel HLS لبث الفيديوهات بأمان. ١. Inertia.j...

The Ultimate Managed Hosting Platform