المتغيرات وأنواع البيانات في PHP
كل برنامج يتعامل مع بيانات: اسم المستخدم، وسعر المنتج، وعدد الطلاب. وحتى يتذكر البرنامج هذه البيانات ويستخدمها، يحفظها في متغيرات. في هذا الدرس ستتعلم كيف تنشئ المتغيرات في PHP، وما أنواع البيانات التي تخزنها، وكيف تدمج النصوص بطريقة صحيحة.
ما هو المتغير؟
Section titled “ما هو المتغير؟”المتغير (Variable) مثل علبة عليها ملصق باسم: تضع بداخلها قيمة، وكلما احتجت القيمة تنادي العلبة باسمها. وفي PHP كل متغير يبدأ بعلامة الدولار $:
<?php$name = "سارة";$age = 14;echo $name;$name: اسم المتغير.=: علامة الإسناد (Assignment)، وتعني «ضع القيمة التي على اليمين داخل المتغير».- لا تحتاج كلمة خاصة لتعريف المتغير مثل
letفي JavaScript؛ يكفي أن تسند له قيمة.
قواعد تسمية المتغيرات
Section titled “قواعد تسمية المتغيرات”- يبدأ بـ
$ثم حرف أو شرطة سفلية_، ولا يبدأ برقم:$age1صحيح، و$1ageخطأ. - لا يحتوي مسافات: استخدم
$firstNameأو$first_name. - الأحرف الكبيرة والصغيرة مختلفة:
$Nameو$nameمتغيران مختلفان. - اختر أسماء إنجليزية واضحة تصف المحتوى، مثل
$totalPriceبدل$x.
أنواع البيانات الأساسية
Section titled “أنواع البيانات الأساسية”<?php$name = "سارة"; // نص (string)$age = 14; // عدد صحيح (int)$height = 1.55; // عدد عشري (float)$isStudent = true; // قيمة منطقية (bool)$phone = null; // لا قيمة (null)لمعرفة نوع المتغير وقيمته أثناء التجربة، استخدم الدالة var_dump:
<?phpvar_dump($name);var_dump($age);var_dump($height);var_dump($isStudent);var_dump($phone);string(8) "سارة"int(14)float(1.55)bool(true)NULLلاحظ شيئاً طريفاً: كلمة «سارة» أربعة أحرف، لكن var_dump قالت إن طولها 8! لأن PHP تحسب البايتات لا الحروف، والحرف العربي يأخذ بايتين. ستتعلم في درس الدوال كيف تحسب الحروف العربية بشكل صحيح.
PHP لغة ديناميكية: لا تحدد نوع المتغير مسبقاً، بل تستنتجه من القيمة. ويمكن أن يتغير النوع لاحقاً:
<?php$score = 10;$score = "ممتاز";echo gettype($score);stringعلامات التنصيص: مزدوجة أم مفردة؟
Section titled “علامات التنصيص: مزدوجة أم مفردة؟”هذا فرق مهم جداً في PHP:
<?php$city = "القاهرة";echo "أسكن في $city";echo 'أسكن في $city';أسكن في القاهرةأسكن في $city- العلامات المزدوجة
"...": تبحث PHP داخلها عن المتغيرات وتضع قيمها. هذا يسمى الاستبدال (Interpolation). - العلامات المفردة
'...': النص يُطبع كما هو حرفياً.
تخيّل العلامات المزدوجة مثل استمارة فيها خانات فارغة تمتلئ تلقائياً، والمفردة مثل صورة للاستمارة: ما فيها يبقى كما هو.
دمج النصوص بالنقطة
Section titled “دمج النصوص بالنقطة”لدمج نصين أو أكثر في PHP نستخدم النقطة . وليس علامة + كما في JavaScript:
<?php$first = "أحمد";$last = "علي";$full = $first . " " . $last;echo $full;أحمد عليولإضافة نص إلى نهاية متغير موجود، استخدم .=:
<?php$msg = "مرحباً";$msg .= " بك";$msg .= " يا $first";echo $msg;مرحباً بك يا أحمدالعمليات على الأرقام
Section titled “العمليات على الأرقام”<?php$score = 10;$score = $score + 5; // 15$score += 3; // اختصار: $score = $score + 3echo $score;18العمليات المتاحة: + و - و * و /، و % لباقي القسمة. والاختصارات += و -= و *= و /= تعمل بنفس الطريقة.
الثوابت
Section titled “الثوابت”الثابت (Constant) قيمة لا تتغير طوال تشغيل البرنامج، مثل اسم الموقع أو الحد الأقصى للطلاب. يُكتب بدون $، وبأحرف كبيرة عادةً:
<?phpconst SITE_NAME = "مدرسة البرمجة";define("MAX_STUDENTS", 30);
echo SITE_NAME . " تقبل " . MAX_STUDENTS . " طالباً في الفصل";مدرسة البرمجة تقبل 30 طالباً في الفصلالطريقتان const و define تعطيان نفس النتيجة تقريباً. وإذا حاولت تغيير قيمة ثابت، ستحصل على خطأ، وهذا بالضبط ما نريده لحماية القيم المهمة.
جرّب بنفسك
Section titled “جرّب بنفسك”اكتب ملف product.php فيه ثلاثة متغيرات: اسم المنتج، والسعر، وقيمة الخصم. احسب السعر النهائي في متغير رابع، ثم اطبع سطرين، واستخدم var_dump لتعرف هل السعر النهائي أكبر من 100:
<?php$product = "كتاب";$price = 120;$discount = 20;$final = $price - $discount;
echo "المنتج: $product\n";echo "السعر بعد الخصم: $final جنيه\n";var_dump($final > 100);المنتج: كتابالسعر بعد الخصم: 100 جنيهbool(false)الرمز \n يعني «سطراً جديداً» عند التشغيل من الطرفية بالأمر php product.php. أما في صفحة ويب فاستخدم <br> بدلاً منه.
أخطاء شائعة
Section titled “أخطاء شائعة”- نسيان $: كتابة
name = "سارة";تسبب خطأ. كل متغير يبدأ بـ$. - الدمج بعلامة +:
"أهلاً " + $nameلا تدمج النصوص في PHP، بل تحاول جمعها كأرقام وتعطي خطأ. استخدم النقطة.. - متغير داخل علامات مفردة:
'السعر: $price'يطبع اسم المتغير نفسه. استخدم العلامات المزدوجة.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ماذا يطبع الكود: $x = 'PHP'; echo 'أتعلم $x';؟
العلامات المفردة تطبع النص كما هو دون استبدال المتغيرات. مع العلامات المزدوجة سيُطبع «أتعلم PHP».
سؤال
أي علامة تدمج نصين في PHP؟
النقطة . هي عامل دمج النصوص في PHP، و .= تضيف نصاً إلى نهاية متغير.
الخلاصة
Section titled “الخلاصة”- المتغير يبدأ بـ
$ويُنشأ بإسناد قيمة له، والأحرف الكبيرة والصغيرة مختلفة. - الأنواع الأساسية:
stringوintوfloatوboolوnull، وvar_dumpتكشف النوع والقيمة. - العلامات المزدوجة تستبدل المتغيرات، والمفردة تطبع النص حرفياً.
- النقطة
.لدمج النصوص، و.=للإضافة إلى نهاية النص. - الثوابت بـ
constأوdefine، وتُكتب بدون$ولا تتغير.