🚀 فهم نطاق المتغيرات في PHP: أين تعيش بياناتك؟
بعد أن تعلمتم كيفية تعريف المتغيرات واستخدامها، قد تتساءلون: "هل يمكنني استخدام أي متغير في أي مكان داخل الكود الخاص بي؟".
الإجابة ببساطة هي: لا. هنا يأتي مفهوم نطاق المتغيرات (Variable Scope).
نطاق المتغير هو ببساطة "المنطقة" التي يكون فيها المتغير معرفاً ويمكن الوصول إليه. إذا حاولت استخدام متغير خارج نطاقه، فإن لغة PHP لن تتعرف عليه وستظهر لك رسالة خطأ. ⚠️
في PHP، لدينا ثلاثة أنواع رئيسية من النطاقات، ولكننا سنركز اليوم على أهم نوعين للمبتدئين: النطاق المحلي (Local Scope) و النطاق العام (Global Scope).
🏠 أولاً: النطاق المحلي (Local Scope)
عندما تقوم بتعريف متغير داخل دالة (Function)، فإن هذا المتغير يُسمى "متغيراً محلياً".
ماذا يعني هذا؟ يعني أن هذا المتغير "يعيش" فقط داخل هذه الدالة. لا يمكن لأي جزء آخر من الكود خارج الدالة أن يراه أو يستخدمه. بمجرد أن تنتهي الدالة من تنفيذ عملها، يتم حذف هذا المتغير من الذاكرة.
لنلقِ نظرة على هذا المثال البسيط:
<?php
function myTest() {
$x = 10; // هذا متغير محلي (Local Variable)
echo "Value of x inside function: $x"; // سيعمل بشكل صحيح
}
myTest(); // استدعاء الدالة
// محاولة طباعة المتغير خارج الدالة
echo "Value of x outside function: $x"; // ❌ خطأ: المتغير $x غير معرف هنا
?>
شرح الكود:
- قمنا بتعريف المتغير
$xداخل الدالةmyTest. - عندما استدعينا الدالة، قامت بطباعة القيمة
10بنجاح. - ولكن عندما حاولنا طباعة
$xخارج الدالة، أخبرتنا PHP بأنها لا تعرف ما هو$xلأن نطاقه محصور داخل الدالة فقط.
🌍 ثانياً: النطاق العام (Global Scope)
المتغير الذي يتم تعريفه خارج جميع الدوال يسمى "متغيراً عاماً".
ماذا يعني هذا؟ يعني أن هذا المتغير متاح في معظم أجزاء السكريبت. ولكن، هناك ملاحظة هامة جداً في PHP: المتغيرات العامة لا يمكن الوصول إليها مباشرة من داخل الدوال.
لنرى ماذا يحدث في هذا المثال:
<?php
$name = "Ahmed"; // هذا متغير عام (Global Variable)
function showName() {
// محاولة الوصول للمتغير العام مباشرة
echo "Hello $name"; // ❌ خطأ: المتغير $name غير معرف داخل هذه الدالة
}
showName();
?>
لماذا حدث هذا؟ لأن PHP تفصل تماماً بين ما هو "عام" وما هو "محلي" داخل الدوال لحماية البيانات من التغيير العشوائي.
🔑 ثالثاً: كيف نستخدم المتغير العام داخل الدالة؟ (كلمة global)
إذا كنت مضطراً لاستخدام متغير عام داخل دالة، توفر لك PHP كلمة محجوزة تسمى global. هذه الكلمة تخبر الدالة: "من فضلكِ، اذهبي للنطاق العام وابحثي عن هذا المتغير هناك".
إليك الطريقة الصحيحة للقيام بذلك:
<?php
$city = "Cairo"; // متغير عام
function printCity() {
global $city; // نخبر PHP أننا نريد استخدام المتغير العام $city
echo "Welcome to $city"; // ✅ الآن سيعمل الكود بنجاح
}
printCity();
?>
شرح الكود:
- بدأنا بتعريف
$cityفي الخارج. - داخل الدالة
printCityاستخدمناglobal $city;. - الآن أصبحت الدالة قادرة على رؤية القيمة "Cairo" وطباعتها.
💡 ملخص سريع للتذكر
| نوع النطاق | مكان التعريف | مكان الوصول |
|---|---|---|
| محلي (Local) | داخل الدالة | داخل هذه الدالة فقط 🔒 |
| عام (Global) | خارج الدوال | خارج الدوال (وبداخلها باستخدام global) 🌍 |
🎓 اختبر معلوماتك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال