I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

ليه لازم تنقل مشاريعك لـ PHP 8 فوراً؟ التغيير اللي هيخليك تحب البرمجة تاني

ليه لازم تنقل مشاريعك لـ PHP 8 فوراً؟ التغيير اللي هيخليك تحب البرمجة تاني لو كنت مبرمج بقالك فترة بتشتغل بـ PHP، أكيد مريت بلحظات كنت بتحس فيها إن الكود بتاعك

ليه لازم تنقل مشاريعك لـ PHP 8 فوراً؟ التغيير اللي هيخليك تحب البرمجة تاني
Reading Count: 246

ليه لازم تنقل مشاريعك لـ PHP 8 فوراً؟ التغيير اللي هيخليك تحب البرمجة تاني

لو كنت مبرمج بقالك فترة بتشتغل بـ PHP، أكيد مريت بلحظات كنت بتحس فيها إن الكود بتاعك "كلكيع" أو محتاج أسطر كتير عشان تعمل حاجة بسيطة. كنا دايماً بنشتكي من الـ Syntax القديم اللي بيخلي عملية التطوير (Development) أبطأ. بس خليني أقولك إن PHP 8 مكنتش مجرد تحديث عادي، دي كانت نقلة نوعية (Quantum Leap) غيرت الطريقة اللي بنفكر بيها وإحنا بنكتب الكود. في المقال ده، هنعرف ليه الميزات الجديدة في PHP 8 مش رفاهية، دي أدوات أساسية لأي مطور ويب (Web Developer) عايز يكتب كود نظيف، سريع، وقابل للصيانة.

الوسائط المسماة (Named Arguments): وداعاً لترتيب البارامترات

مين فينا مكنش بيتلخبط وهو بيبعت بارامترات (Parameters) لدالة (Function) فيها 5 أو 6 متغيرات؟ وخصوصاً لو أغلبهم قيمتهم null أو قيم افتراضية. قبل PHP 8، كنت بتضطر تبعت كل القيم بالترتيب عشان توصل للي أنت عايزه. مع الـ Named Arguments، الموضوع بقى أسهل بكتير. دلوقتي تقدر تبعت القيمة اللي أنت محتاجها بس بالاسم بتاعها.


// الكود قبل PHP 8
createUser('Ahmed', null, true, 'Admin');

// الكود بعد PHP 8
createUser(name: 'Ahmed', role: 'Admin');

بص الجمال! الكود بقى مقروء جداً (Readable)، ولو حبيت تغير ترتيب البارامترات في الـ Function مستقبلاً، الكود بتاعك مش هيضرب لأنك بتعتمد على الاسم مش على الترتيب (Positional arguments).

تعبير المطابقة (Match Expression): البديل الأذكى لـ Switch

كلنا بنكره الـ Switch statement بسبب الـ break اللي لو نسيتها بتعمل مشاكل لا حصر لها، وبسبب الـ Syntax اللي بياخد مساحة كبيرة في الملف. الـ Match expression في PHP 8 جت عشان تحل المعضلة دي وتخلي الكود بتاعك أشيك بكتير.


$status = match($code) {
    200 => 'Success',
    404 => 'Not Found',
    500 => 'Server Error',
    default => 'Unknown Status',
};

لاحظ هنا إن الـ Match بيرجع قيمة (Returns a value)، وده معناه إنك تقدر تسند النتيجة لمتغير فوراً. كمان الـ Strict comparison هو اللي شغال هنا، يعني مش هتقلق من التحويلات غير المقصودة للأنواع (Type Juggling) اللي كانت بتحصل في الـ Switch التقليدية.

الترقيات في المنشئ (Constructor Property Promotion)

من أكتر الحاجات المزعجة في كتابة الـ Classes في PHP هي إنك بتعرف المتغيرات (Properties) في أول الكلاس، وبعدين تحطهم في الـ Constructor وتعملهم Assign. ده بيخلي الكود طويل على الفاضي. دلوقتي، تقدر تعمل ده كله في سطر واحد داخل الـ Constructor نفسه.


class User {
    public function __construct(
        public string $name,
        private int $age = 25
    ) {}
}

تخيل كام سطر وفرته هنا! ده مش بس توفير وقت، ده تقليل لفرص حدوث أخطاء (Bugs) أثناء الكتابة.

تعدد الأنواع (Union Types)

في لغات زي TypeScript، كنا بنحس بفرق كبير لما بنقدر نحدد إن الدالة ممكن ترجع Integer أو String. أخيراً، PHP 8 دعمت الـ Union Types بشكل أساسي. ده بيخلي الكود بتاعك "قوي" (Type Safe) وبيقلل الـ Runtime errors اللي بتحصل بسبب اختلاف أنواع البيانات.


public function calculate(int|float $number): int|float {
    return $number * 2;
}

خاتمة: نصيحة من أخ لمطور محترف

يا صديقي، التطوير في لغة PHP مبيقفش، والناس اللي لسه متمسكة بنسخ PHP 7.4 أو أقل فايتها كتير جداً، مش بس في الـ Syntax اللي بيسهل الحياة، لكن كمان في سرعة الأداء (Performance) اللي PHP 8 و 8.1 و 8.2 بيقدموها بفضل الـ JIT Compiler. نصيحتي ليك: ابدأ جرب الميزات دي في مشاريعك الجانبية (Side Projects)، واتعود على الـ Type hinting، وشوف بنفسك إزاي مستوى شغلك هيتحسن والـ Debugging هياخد منك وقت أقل بكتير.

اتعلم دايماً إن التكنولوجيا أداة، والمبرمج الشاطر هو اللي بيعرف يستخدم أدواته عشان يبني حاجة مستقرة وقابلة للتوسع. بالتوفيق في رحلتك البرمجية!


Share

Related posts

Apr 26, 2026 • 1 min read
Reading Count: 4
إزاي تكتب كود PHP نظيف (Clean Code) وتخلص من كابوس الـ Spaghetti Code

إزاي تكتب كود PHP نظيف (Clean Code) وتخلص من كابوس الـ Spaghetti Code أكيد مريت بالموقف ده قبل كدة،...

Apr 26, 2026 • 1 min read
Reading Count: 17
الفرق بين الكلاس المجرد (Abstract Class) والواجهة (Interface) في لغة PHP

الفرق بين الكلاس المجرد (Abstract Class) والواجهة (Interface) في لغة PHP أهلاً بيك يا صديقي المبرمج....

Apr 25, 2026 • 1 min read
Reading Count: 87
ازاي تبني تطبيق SaaS بـ Laravel: دليلك العملي للمحترفين

ازاي تبني تطبيق SaaS بـ Laravel: دليلك العملي للمحترفين كتير مننا كمبرمجين بيحلم يعمل منتج خاص بيه،...