وقّف نسخ الكود! اتعلم تستخدم 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؟"

المدونة

البرمجة الكائنية (OOP) – المفاهيم الأساسية

أغسطس 09, 2025

البرمجة الكائنية التوجه (Object Oriented Programming - OOP) هي أسلوب حديث في تطوير البرمجيات يُقسّم التطبيق إلى وحدات تسمى كائنات (Objects) تتفاعل م...

نظرة معمقة على Laravel Context: تسجيل وتحليل السياق البرمجي باحترافية

يوليو 20, 2025

في Laravel 12، تم تقديم Laravel Context كأداة قوية بتخلي تتبع الطلبات، تسجيل الأخطاء، وتحليل سلوك الوظائف الخلفية أسهل وأدق من أي وقت فات. وده بيحصل ع...

React Labs: View Transitions وActivity

يونيو 17, 2025

React Labs: View Transitions وActivity المنشور اتكتب يوم 23 أبريل 2025 من Ricky Hanlon. في React Labs النهارده بيقدّموا ميزتين تجريبيّتين مودرن...

تذكير بالمهام مع Laravel وMongoDB

يونيو 30, 2025

📌 بناء تطبيق تذكير مهام المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات...

Laravel 12.21.0 – تحديث ذكي لتسهيل الاستعلامات والتحقق الصارم للبيانات

أغسطس 03, 2025

أصدرت Laravel النسخة 12.21.0 بمزايا برمجية هامة تساهم في كتابة كود أنظف وأسهل في الصيانة. من أهمها دالة whereValueBetween() الجديدة، بالإضافة إلى...

استخدام useCallback في React: الفوائد، القيود، والممارسات المثالية

يوليو 31, 2025

Hook useCallback في React يُستخدم لإنشاء نسخة ثابتة من دالة (callback) بحيث لا يُعاد إنشاؤها إلا إذا تغيرت الـ dependencies المحددة. الهدف الأساسي م...