أساسيات PHP

المتغيرات وأنواع البيانات

13 دقيقة الدرس 3 من 45

المتغيرات وأنواع البيانات

المتغيرات هي حاويات لتخزين قيم البيانات. في هذا الدرس، سنستكشف كيفية إنشاء واستخدام المتغيرات في PHP، وفهم الأنواع المختلفة من البيانات التي يمكن لـ PHP التعامل معها.

ما هو المتغير؟

المتغير هو اسم رمزي لقيمة يمكن أن تتغير أثناء تنفيذ البرنامج. فكر فيه كصندوق مُعنون حيث يمكنك تخزين أنواع مختلفة من المعلومات.

<?php $name = "John"; // متغير يخزن نصاً $age = 25; // متغير يخزن رقماً $isStudent = true; // متغير يخزن قيمة منطقية ?>

قواعد تسمية المتغيرات

لدى PHP قواعد محددة لتسمية المتغيرات:

القواعد: 1. يجب أن تبدأ بعلامة الدولار ($) 2. يجب أن تبدأ بحرف أو شرطة سفلية بعد $ 3. يمكن أن تحتوي على حروف وأرقام وشرطات سفلية 4. لا يمكن أن تحتوي على مسافات 5. حساسة لحالة الأحرف ($name ≠ $Name) ✓ أسماء متغيرات صالحة: $name $_name $name123 $firstName $first_name $USER_ROLE ❌ أسماء متغيرات غير صالحة: $123name // لا يمكن البدء برقم $first-name // لا يمكن أن تحتوي على شرطات $first name // لا يمكن أن تحتوي على مسافات $first.name // لا يمكن أن تحتوي على نقاط
أفضل ممارسة: استخدم أسماء وصفية (camelCase أو snake_case) تشير بوضوح إلى ما يخزنه المتغير. فضّل $firstName أو $first_name على $fn.

إعلان وتعيين المتغيرات

PHP ضعيفة الكتابة - لا تحتاج إلى إعلان نوع المتغير. تحدد PHP تلقائياً النوع بناءً على القيمة.

<?php // الإعلان والتعيين في خطوة واحدة $username = "JohnDoe"; // تعيينات متعددة $x = $y = $z = 10; // تغيير قيمة المتغير $count = 5; $count = 10; // الآن $count هو 10 // يمكن للمتغيرات تغيير النوع $value = 100; // عدد صحيح $value = "text"; // الآن نص (غير موصى به) ?>
مهم: بينما تسمح PHP بتغيير أنواع المتغيرات، من الأفضل الحفاظ على أنواع ثابتة للوضوح وتجنب الأخطاء.

أنواع البيانات في PHP

تدعم PHP عدة أنواع من البيانات. دعنا نستكشف كل واحد:

1. النص (String)

النص هو تسلسل من الأحرف محاط بعلامات اقتباس:

<?php // علامات اقتباس مفردة - نص حرفي $name = 'John Doe'; // علامات اقتباس مزدوجة - تسمح بإدراج المتغيرات $greeting = "مرحباً، $name"; // المخرج: مرحباً، John Doe // الدمج باستخدام عامل النقطة $fullMessage = $greeting . " أهلاً بك!"; // نص متعدد الأسطر (بناء جملة heredoc) $html = <<<HTML <div> <h1>العنوان</h1> <p>المحتوى هنا</p> </div> HTML; ?>
الفرق: علامات الاقتباس المفردة ('...') تتعامل مع كل شيء حرفياً. علامات الاقتباس المزدوجة ("...") تفسر المتغيرات وتسلسلات الهروب مثل \n (سطر جديد).

2. العدد الصحيح (Integer)

أعداد كاملة بدون نقاط عشرية:

<?php $age = 25; // عدد صحيح موجب $temperature = -5; // عدد صحيح سالب $hex = 0x1A; // سداسي عشري (26 في العشري) $octal = 0755; // تدوين ثماني $binary = 0b1010; // ثنائي (10 في العشري) // أعداد كبيرة (PHP 7.4+) $population = 7_500_000_000; // شرطة سفلية لسهولة القراءة ?>

3. العدد العشري (Float)

أعداد بنقاط عشرية:

<?php $price = 19.99; $temperature = -3.5; $scientific = 1.5e3; // تدوين علمي (1500) $pi = 3.14159; ?>

4. القيمة المنطقية (Boolean)

تمثل صحيح أو خطأ:

<?php $isActive = true; $hasAccess = false; // شائع الاستخدام في الشروط if ($isActive) { echo "المستخدم نشط"; } // القيم الكاذبة في PHP // false, 0, 0.0, "", "0", null, مصفوفة فارغة ?>
تذكر: القيم التالية تُعتبر خاطئة: false, 0, 0.0, "", "0", null، والمصفوفات الفارغة. كل شيء آخر صحيح.

5. المصفوفة (Array)

مجموعة مرتبة من القيم:

<?php // مصفوفة مفهرسة (مفاتيح رقمية) $colors = array("red", "green", "blue"); $fruits = ["apple", "banana", "orange"]; // بناء جملة قصير // مصفوفة ترابطية (مفاتيح نصية) $person = [ "name" => "John", "age" => 25, "city" => "New York" ]; // الوصول إلى عناصر المصفوفة echo $colors[0]; // المخرج: red echo $person["name"]; // المخرج: John ?>

6. قيمة فارغة (NULL)

تمثل متغيراً بدون قيمة:

<?php $value = null; // تعيين صريح لـ null $notDefined; // المتغيرات غير المعرفة هي null // التحقق من null if ($value === null) { echo "القيمة فارغة"; } // isset() يتحقق مما إذا كان المتغير معيناً وليس null if (isset($value)) { echo "القيمة معينة"; } ?>

7. الكائن (Object)

نسخة من فئة (سنغطي هذا بالتفصيل لاحقاً):

<?php class Person { public $name; public $age; } $john = new Person(); $john->name = "John"; $john->age = 25; ?>

دوال التحقق من الأنواع

توفر PHP دوال للتحقق من أنواع المتغيرات:

<?php $name = "John"; $age = 25; $price = 19.99; $isActive = true; $colors = ["red", "green"]; $value = null; // دوال التحقق من النوع is_string($name); // true is_int($age); // true is_float($price); // true is_bool($isActive); // true is_array($colors); // true is_null($value); // true // الحصول على نوع المتغير echo gettype($age); // المخرج: integer // معلومات المتغير (تصحيح الأخطاء) var_dump($age); // المخرج: int(25) ?>

تحويل الأنواع (Type Casting)

يمكنك تحويل المتغيرات من نوع إلى آخر:

<?php $number = "123"; // نص // تحويل إلى عدد صحيح $int = (int)$number; // 123 كعدد صحيح $int = intval($number); // طريقة بديلة // تحويل إلى عدد عشري $float = (float)"19.99"; // تحويل إلى نص $str = (string)123; // تحويل إلى قيمة منطقية $bool = (bool)1; // true $bool = (bool)0; // false // تحويل إلى مصفوفة $arr = (array)"hello"; // ["hello"] ?>
كن حذراً: تحويل الأنواع يمكن أن يؤدي إلى نتائج غير متوقعة. على سبيل المثال، (int)"10.5" يصبح 10 (يُفقد الجزء العشري).

نطاق المتغيرات (Variable Scope)

يحدد نطاق المتغير أين يمكن الوصول إلى المتغير:

<?php // نطاق عام - يمكن الوصول إليه في أي مكان خارج الدوال $globalVar = "أنا عام"; function testScope() { // نطاق محلي - يمكن الوصول إليه فقط داخل هذه الدالة $localVar = "أنا محلي"; // للوصول إلى متغير عام داخل دالة global $globalVar; echo $globalVar; // بديل: استخدام $GLOBALS superglobal echo $GLOBALS['globalVar']; } testScope(); echo $localVar; // خطأ: متغير غير معرف ?>

الثوابت (Constants)

الثوابت تشبه المتغيرات لكن قيمها لا يمكن تغييرها:

<?php // تعريف ثابت باستخدام define() define("SITE_NAME", "موقعي"); define("MAX_USERS", 100); // تعريف ثابت باستخدام كلمة const (PHP 5.3+) const API_KEY = "abc123xyz"; const TAX_RATE = 0.15; // استخدام الثوابت (بدون علامة $) echo SITE_NAME; echo MAX_USERS; // الثوابت عامة افتراضياً function showSiteName() { echo SITE_NAME; // يعمل بدون كلمة global } // التحقق مما إذا كان الثابت موجوداً if (defined("SITE_NAME")) { echo SITE_NAME; } ?>
اتفاقية: استخدم أسماء بأحرف كبيرة للثوابت لتمييزها عن المتغيرات. استخدم الثوابت للقيم التي لا تتغير أبداً، مثل إعدادات التكوين.

المتغيرات المتغيرة (Variable Variables)

تسمح PHP باستخدام قيمة متغير واحد كاسم لآخر:

<?php $foo = "bar"; $$foo = "Hello"; // ينشئ $bar = "Hello" echo $bar; // المخرج: Hello echo $$foo; // المخرج: Hello // مثال عملي $field = "username"; $$field = "JohnDoe"; echo $username; // المخرج: JohnDoe ?>
ملاحظة: المتغيرات المتغيرة قوية لكن يمكن أن تجعل الكود أصعب في القراءة. استخدمها باعتدال وفقط عند الضرورة.

أفضل الممارسات

✓ افعل: - استخدم أسماء متغيرات وصفية - اتبع اتفاقية تسمية متسقة (camelCase أو snake_case) - قم بتهيئة المتغيرات قبل الاستخدام - استخدم الثوابت للقيم الثابتة - علّق على منطق المتغيرات المعقد ❌ لا تفعل: - استخدام أسماء عامة مثل $data أو $temp أو $x (إلا في الحلقات) - خلط اتفاقيات التسمية - إعادة استخدام المتغيرات لأغراض مختلفة - استخدام المتغيرات المتغيرة بدون داعٍ - تغيير أنواع المتغيرات بشكل متكرر

تمرين عملي:

المهمة: أنشئ برنامج نصي PHP يخزن معلومات عن منتج:

  • اسم المنتج (نص)
  • السعر (عدد عشري)
  • الكمية في المخزون (عدد صحيح)
  • متوفر (قيمة منطقية)
  • اعرض جميع المعلومات مع تسميات مناسبة
  • احسب القيمة الإجمالية (السعر × الكمية)

الحل:

<?php // معلومات المنتج $productName = "لابتوب"; $price = 999.99; $quantity = 15; $isAvailable = true; // حساب القيمة الإجمالية $totalValue = $price * $quantity; // عرض المعلومات echo "<h2>معلومات المنتج</h2>"; echo "<p><strong>الاسم:</strong> $productName</p>"; echo "<p><strong>السعر:</strong> $" . number_format($price, 2) . "</p>"; echo "<p><strong>الكمية:</strong> $quantity</p>"; echo "<p><strong>متوفر:</strong> " . ($isAvailable ? "نعم" : "لا") . "</p>"; echo "<p><strong>القيمة الإجمالية:</strong> $" . number_format($totalValue, 2) . "</p>"; ?>

الملخص

في هذا الدرس، تعلمت:

  • المتغيرات هي حاويات لتخزين قيم البيانات
  • يجب أن تبدأ أسماء المتغيرات بـ $ وتتبع قواعد تسمية محددة
  • لدى PHP 8 أنواع بيانات رئيسية: نص، عدد صحيح، عدد عشري، قيمة منطقية، مصفوفة، كائن، مورد، NULL
  • استخدم gettype() ودوال is_*() للتحقق من أنواع المتغيرات
  • تحويل الأنواع يحول المتغيرات بين الأنواع
  • نطاق المتغير يحدد أين يمكن الوصول إلى المتغيرات
  • الثوابت تخزن قيماً لا تتغير أبداً
  • استخدم أسماء وصفية واتفاقيات متسقة
التالي: في الدرس التالي، سنستكشف العوامل في PHP - كيفية إجراء الحسابات والمقارنات والعمليات المنطقية مع المتغيرات الخاصة بك!

ES
Edrees Salih
منذ 10 ساعات

We are still cooking the magic in the way!