وقّف نسخ الكود! اتعلم تستخدم 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 تلقائي على كل ModelLogsActivity– يسجل أفعال المستخدمينApiResponse– يوحّد شكل الردود في JSON
6. امتى مش تستخدم Traits؟
- ❌ لو المنطق معقد وعاوز تعتمد على Dependency Injection
- ❌ لما Trait يبقى فيه دوال كتير مش مترابطة
- ❌ لو Trait مستخدمة من كلاس واحد بس
- ❌ لو الكود هو business logic أساسي – استخدم Service Class
الخاتمة
Traits حاجة قوية جدًا لإعادة الاستخدام والحفاظ على نظافة الأكواد—لو استخدمتها صح. المرة الجاية قبل ما تعمل copy + paste إسأل نفسك: "ممكن دي تبقى Trait؟"
المدونة
يوليو 20, 2025
في Laravel 12، تم تقديم Laravel Context كأداة قوية بتخلي تتبع الطلبات، تسجيل الأخطاء، وتحليل سلوك الوظائف الخلفية أسهل وأدق من أي وقت فات. وده بيحصل ع...
يوليو 06, 2025
إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...
أغسطس 03, 2025
أصدرت Laravel النسخة 12.21.0 بمزايا برمجية هامة تساهم في كتابة كود أنظف وأسهل في الصيانة. من أهمها دالة whereValueBetween() الجديدة، بالإضافة إلى...
يوليو 27, 2025
أدوات قوية تقدر تستخدمها لتطوير تطبيقات Laravel بشكل احترافي: Inertia.js v2، وView Creators، وحزمة Laravel HLS لبث الفيديوهات بأمان. ١. Inertia.j...
يوليو 30, 2025
لماذا السرعة ليست رفاهية؟ في زمن الضغط والسرعة، ما فيش حد عنده وقت يستنى موقع يحمّل! المستخدمين على الموبايل بينسحبوا من الموقع إذا ما فتحش في أق...
يونيو 30, 2025
📌 بناء تطبيق تذكير مهام المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات...