
تقرير عن وضع تطوير PHP 8.5 حتى أبريل 2025
زي ما تعودنا كل سنة، حبيت أشارككم نظرة سريعة على آخر التحديثات في لغة PHP، خاصة للنسخة الجديدة PHP 8.5، اللي ما زالت تحت التطوير ومن المتوقع تنزل بشكل رسمي في نوفمبر 2025 إن شاء الله.
النسخة الجديدة تركّز على تحسين تجربة المبرمجين وتوسيع قدرات اللغة، مع إضافات واضحة تسهّل الشغل وتخلي الكود أوضح وأكثر أمان.
إلى الآن، ما خلصوا من التصويت على كل الميزات، وبعضها بدأوا يطبقونه، فجمعت لكم الوضع الحالي بشكل مرتب، مقسوم إلى:
ميزات تحت التصويت (In Voting)
دوال array_first()
و array_last()
هذي الدوال فكرتها بسيطة، تسهّل عليك تجيب أول وآخر عنصر من المصفوفة بسرعة، بدون ما تلعب بالمؤشر الداخلي للمصفوفة.
مثال:
$items = ['a' => 10, 'b' => 20, 'c' => 30];
echo array_first($items); // 10
echo array_last($items); // 30
أنواع باراميترات never (إصدار ثاني)
إضافة تحسين على نوع never اللي عرفناه في PHP 8.1، بحيث تقدر تستخدمه للباراميترات، ومعناه إن الدالة إذا وصلت لهذي المرحلة خلاص، ما بترجع، زي حالات الإنهاء أو الخروج الإجباري.
function terminate(): never {
exit;
}
ميزات تم قبولها (Accepted)
السمات (Attributes) على الثوابت
الآن تقدر تضيف سمات على الثوابت، سواء تحذير، إهمال، أو غيره.
#[Deprecated("استخدم NEW_CONST بدل هذا")]
const OLD_CONST = 123;
دعم المقارنة حسب وحدات الحروف في levenshtein()
تحسين دالة levenshtein()
بحيث تصير تقارن النصوص بدقة أعلى وتراعي الـ Unicode بشكل أفضل، خاصة للغات اللي فيها حروف مركبة.
ميزات تم تطبيقها فعلياً (Implemented)
صلاحيات مختلفة لخصائص الستاتيك (Asymmetric Visibility)
بعد ما أضافوها للخصائص العادية في PHP 8.4، الآن تقدر تتحكم بصلاحيات القراءة والكتابة للخصائص الستاتيكية بشكل مستقل.
class Settings {
public private(set) static string $mode = 'live';
}
تنبيه إذا أهملت قيمة راجعة مهمة باستخدام #[\NoDiscard]
إذا استخدمت دالة راجعة مهمة وما استعملت ناتجها، PHP ينبهك.
#[\NoDiscard]
function result(): int {
return 42;
}
result(); // يعطي تحذير إذا تجاهلت القيمة
التعرف على المعالجات الحالية للأخطاء والاستثناءات
إضافة دوال جديدة تستعرض المعالجات الحالية مباشرة:
get_error_handler(): ?callable
get_exception_handler(): ?callable
إذا ما فيه معالج، ترجع null
.
استخدام الإغلاقات (Closures) في التعبيرات الثابتة
صار بإمكانك تستخدم دوال إغلاق (anonymous functions) داخل الثوابت أو القيم الافتراضية.
const FILTER = static fn($v) => is_string($v);
دوال جاهزة كقيمة ثابتة (First-Class Callables في الثوابت)
تقدر تستخدم الميثودز أو الفنكشنز بشكل ثابت داخل الكلاس أو كقيمة افتراضية.
class Logger {
const HANDLER = self::class . '::log';
}
تحسين إدارة الجلسات في cURL
صار بإمكانك تستخدم معرّف مشترك لبيانات مثل DNS، وتبقى محفوظة بين السكربتات، هذا مفيد جداً لتطبيقات تعتمد كثير على الشبكة.
$handle = curl_share_init('shared_dns');
curl_share_setopt($handle, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
تحسين تتبع الأخطاء (Backtrace v2)
تتبع الأخطاء صار أوضح، يعرض السياق بشكل مرتب ويقلل من التخمين أثناء التصحيح.
تحديث التعامل مع مجلدات النظام (Directory Class)
كائن الـ Directory صار أكثر أمان، نهائي، ما تقدر تسوي له تسلسل (serialize)، ويلتزم بخصائص لغة PHP الحديثة.
$dir = dir("/tmp");
echo $dir->path; // طريقة آمنة للوصول للمسار
الخلاصة
PHP 8.5 ما جابت تغييرات ضخمة ثورية، لكنها تركزت على تحسينات واضحة تساعد المطورين، تخلي الكود أنظف، أكثر أمان، وتصير التعاملات اليومية أبسط.
إذا أنت تستخدم PHP في مشاريعك، هذا الإصدار يستاهل المتابعة، خاصة إنه يحسّن الأداء، الأمان، والوضوح في الأكواد.