PHP Variables Scope

در PHP، متغیرها فقط در بخش مشخصی از کد قابل دسترسی هستن. به این بخش میگیم Scope (دامنه متغیر).

🔹 انواع Scope در PHP

  1. Local (محلی)

  2. Global (سراسری)

  3. Static (ایستا)

  4. Function Parameter (پارامتر تابع)

1️⃣ Local Scope (متغیر محلی)

متغیری که داخل یک تابع تعریف بشه، فقط داخل همون تابع قابل دسترسیه.

<?php function test() { $x = 5; // متغیر محلی echo $x; } test(); // خروجی: 5 echo $x; // خطا ❌ چون $x خارج از تابع شناخته‌شده نیست ?>

2️⃣ Global Scope (متغیر سراسری)

متغیری که بیرون از تابع تعریف بشه، داخل تابع به طور مستقیم قابل استفاده نیست.

<?php $x = 10; // متغیر سراسری function test() { echo $x; // خطا ❌ } test(); ?>

✅ برای دسترسی به متغیر سراسری داخل تابع باید از کلیدواژه global استفاده کنیم:

<?php $x = 10; $y = 20; function test() { global $x, $y; echo $x + $y; // خروجی: 30 } test(); ?>

یا با آرایه $GLOBALS[]:

<?php $x = 10; $y = 20; function test() { echo $GLOBALS['x'] + $GLOBALS['y']; // خروجی: 30 } test(); ?>

3️⃣ Static Scope (متغیر ایستا)

وقتی تابعی چند بار صدا زده بشه، متغیرهای محلی هر بار ریست میشن.
ولی اگر از static استفاده کنیم، مقدار متغیر بعد از هر بار اجرا حفظ میشه.

<?php function counter() { static $x = 0; // فقط یکبار مقداردهی میشه $x++; echo $x . "<br>"; } counter(); // 1 counter(); // 2 counter(); // 3 ?>

4️⃣ Function Parameters (پارامتر تابع)

پارامترهای تابع مثل متغیر محلی عمل می‌کنن و فقط داخل تابع معتبرن.

<?php function greet($name) { echo "سلام " . $name; } greet("Ali"); // خروجی: سلام Ali greet("Sara"); // خروجی: سلام Sara ?>

خلاصه:

  • Local → فقط داخل تابع

  • Global → خارج از تابع، برای دسترسی داخل تابع باید global یا $GLOBALS استفاده بشه

  • Static → مقدار متغیر بین اجرای تابع حفظ میشه

  • Parameters → متغیرهای ورودی تابع هستن