لارافيل 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 خليه مسموح صراحة.
المدونة
يونيو 03, 2025
لارافيل 12.16.0 - مميزات جديدة للمطورين 1. قاعدات تحقق جديدة: in_array_keys دلوقتي تقدر تتحقق إن الأراي فيه على الأقل مفتاح واحد من اللي انت محددهم...
يوليو 30, 2025
لماذا السرعة ليست رفاهية؟ في زمن الضغط والسرعة، ما فيش حد عنده وقت يستنى موقع يحمّل! المستخدمين على الموبايل بينسحبوا من الموقع إذا ما فتحش في أق...
يوليو 06, 2025
إزاي تستخدم Web Components ببساطة وذكاء كتير من المطورين بيفكروا إن Web Components معمولة عشان تبقى بديل كامل لفريموركات زي React أو Vue. بس الحقيق...
يوليو 24, 2025
🧠 يعني إيه Dynamic Import؟ الديناميـك إمبورت ببساطة هو إنك تحمّل ملف أو موديول JavaScript "وقت الحاجة بس" مش من أول الصفحة. الميزة دي بتقلل حجم ال...
يوليو 01, 2025
🚀 نظام Queue & Jobs في Laravel هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor. الخطوة 1: إنشاء...
يناير 27, 2026
مقدمة يُعد React Native من أكثر الأطر استخدامًا في تطوير تطبيقات الهواتف الذكية متعددة المنصات. ومع ذلك، ظل وقت بناء تطبيقات iOS أحد أكبر التحديا...