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

يوليو 20, 2025

🔧 1. لارافيل 12.0 – ستارتر كيتس وتعديلات أساسية

إصدار 12.0 جاب Starter Kits جاهزة للـ React، Vue، Livewire، وكمان دمج مع WorkOS AuthKit، وكود نوعي آمن، ودعم PHPUnit 12.

React/Vue Starter Kit

تقدر تنشئ مشروع جديد بسهولة:

composer create-project laravel/laravel my-app --prefer-dist
cd my-app
php artisan breeze:install react --typescript

# أو
php artisan breeze:install vue --typescript

WorkOS AuthKit (سوشيال لوجإن، SSO، Passkeys)

// config/workos.php
return [
  'client_id' => env('WORKOS_CLIENT_ID'),
  'api_key' => env('WORKOS_API_KEY'),
  'redirect_uri' => env('WORKOS_REDIRECT_URI'),
  'providers' => ['google'=>true,'github'=>true,'microsoft'=>true],
  'passkeys' => ['enabled'=>true,'rp_name'=>env('APP_NAME'),'rp_id'=>env('APP_DOMAIN')],
];

وفي الكنترولر:

public function callback() {
  $workos = new WorkOS(config('workos.api_key'));
  $profile = $workos->sso->getProfile(request('code'));
  $user = User::firstOrCreate(['email'=>$profile->email], [
    'name'=>$profile->firstName.' '.$profile->lastName,
    'workos_id'=>$profile->id,
  ]);
  auth()->login($user);
  return redirect()->intended('/dashboard');
}

دعم PHPUnit 12 و Type-Safe Requests

public function store(Request $req): JsonResponse {
  $user = User::create([
    'name' => $req->string('name')->value(),
    'email' => $req->string('email')->value(),
    'prefs' => $req->collect('preferences')->toArray(),
  ]);
  return response()->json($user, 201);
}

🧩 2. لارافيل 12.1 – Arr::partition() وتحسينات في HTTP

الميزة الجديدة Arr::partition() بتقسّم المصفوفة حسب شرط:

$numbers = [0,1,2,3,4,5];
[$evens, $odds] = Arr::partition($numbers, fn($n)=>$n%2===0);
// $evens = [0,2,4], $odds = [1,3,5]

وكمان تقدر تتحكم في حجم ponse body لو حصل خطأ في طلب HTTP:

Http::truncateExceptionsAt(240)
  ->post('https://example.com/api', [...]);

⚙️ 3. لارافيل 12.19 – Custom Builders & Fluent Casts وغيرها

  • @useEloquentBuilder: تربط موديل builder خاص.
  • Fluent Casts: تحول الخصائص لكائنات زي URI.
  • Fail-on-Exception Middleware: يفشل الجوب لو حصل throttle exception أوتوماتيكي.
#[useEloquentBuilder(MyBuilder::class)]
class Post extends Model {
  // دلوقتي استعلامات Model هتستخدم MyBuilder
}

📋 4. تغييرات بسيطة وراحة أفضل للمطور

  • String::doesntStartWith() و doesntEndWith().
  • إضافة JSON Serializable في URI class.
  • تحسينات في الـ queue، pagination، واللوجز.
  • تحقّق الصور ما يشتّملش SVG إلا لو بعدتها صراحة: 'photo'=>'image:allow_svg'.

💡 نصائح عملية للاستخدام في المشاريع

  • ✅ استخدم starter kits لتسريع الـ setup.
  • 🔍 استبدل تقسيم المصفوفة باستخدام Arr::partition().
  • 🛡️ استخدم truncate للتقليل من حجم الخطأ في الـ logs.
  • 🧰 لفّك استخدام custom builders و fluent casts لكود أوضح.
  • 🧪 حدّث PHPUnit و Carbon 3 عشان تختبر صح.
  • ⚠️ لو محتاج SVG خليه مسموح صراحة.

المدونة

تاريخ React – استعراض شامل وتحليل تقني

يوليو 26, 2025

1. البدايات: النشأة داخل Facebook في عام 2011، واجه مهندسو Facebook تحديًا متزايدًا في صيانة واجهات المستخدم المعقدة والتفاعلية. تم تطوير مكتبة د...

استدعاء ملفات JavaScript عند الحاجة فقط لتحسين أداء موقعك

يوليو 24, 2025

🧠 يعني إيه Dynamic Import؟ الديناميـك إمبورت ببساطة هو إنك تحمّل ملف أو موديول JavaScript "وقت الحاجة بس" مش من أول الصفحة. الميزة دي بتقلل حجم ال...

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

أغسطس 09, 2025

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

إتقان التحقق الشرطي في Laravel 12

يوليو 07, 2025

إتقان التحقق الشرطي في Laravel 12 في Laravel 12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك ب...

React Native 0.81: نقلة نوعية في كفاءة بيئة التطوير

يناير 27, 2026

مقدمة يُعد React Native من أكثر الأطر استخدامًا في تطوير تطبيقات الهواتف الذكية متعددة المنصات. ومع ذلك، ظل وقت بناء تطبيقات iOS أحد أكبر التحديا...

React Labs: View Transitions وActivity

يونيو 17, 2025

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