درس 4 از 19

متغیر در PHP | آموزش کامل PHP Variables

بخش: مقدمه PHP

متغیرها «ظرف‌هایی» برای ذخیره اطلاعات هستند.

یک متغیر می‌تواند نام کوتاه داشته باشد (مانند $x و $y) یا نام توصیفی‌تر (مانند $age، $carname، $total_volume).

قوانین متغیرها در PHP:

  • یک متغیر باید با علامت $ شروع شود و بعد از آن نام متغیر بیاید
  • نام متغیر باید با یک حرف یا کاراکتر underscore (_) شروع شود
  • نام متغیر نمی‌تواند با عدد شروع شود
  • نام متغیر فقط می‌تواند شامل حروف، اعداد و underscore باشد (A-z، 0-9 و _)
  • نام متغیرها به حروف بزرگ و کوچک حساس هستند ($age و $AGE دو متغیر متفاوت هستند)

به یاد داشته باشید که نام متغیرها در PHP به حروف بزرگ و کوچک حساس هستند.


ایجاد متغیر در PHP

در PHP، یک متغیر با علامت $ شروع می‌شود و بعد از آن نام متغیر قرار می‌گیرد:

Example
ایجاد دو متغیر با نام‌های $x و $y:

$x = 5;
$y = "John";

در مثال بالا، متغیر $x مقدار 5 را نگه می‌دارد و متغیر $y مقدار "John" را نگه می‌دارد.

نکته: زمانی که یک مقدار متنی به متغیر اختصاص می‌دهید، باید مقدار را داخل علامت نقل‌قول قرار دهید.

نکته: برخلاف بسیاری از زبان‌های برنامه‌نویسی دیگر، در PHP دستوری برای تعریف متغیر وجود ندارد. متغیر در همان لحظه‌ای که مقداری به آن اختصاص داده می‌شود ایجاد می‌شود.


نمایش متغیرها

کلمه کلیدی echo در PHP معمولاً برای نمایش داده‌ها در صفحه استفاده می‌شود.

مثال زیر نشان می‌دهد چگونه یک متن و مقدار یک متغیر را نمایش دهیم:

Example

$txt = "W3Schools.com";
echo "I love $txt!";

مثال زیر همان خروجی مثال بالا را تولید می‌کند:

Example

$txt = "W3Schools.com";
echo 'I love ' . $txt . '!';

مثال زیر مجموع دو متغیر را نمایش می‌دهد:

Example

$x = 5;
$y = 4;
echo $x + $y;

نکته: در فصل PHP Echo/Print بیشتر درباره echo و نحوه نمایش داده‌ها در PHP یاد خواهید گرفت.


PHP یک زبان با نوع‌دهی سست (Loosely Typed) است

در مثال‌های بالا توجه کنید که ما لازم نبود مشخص کنیم متغیر چه نوع داده‌ای دارد.

PHP به طور خودکار بر اساس مقدار متغیر، نوع داده (Data Type) آن را تشخیص می‌دهد.
از آنجا که نوع داده‌ها به صورت سخت‌گیرانه تعیین نمی‌شوند، می‌توانید کارهایی مانند جمع کردن یک رشته (string) با یک عدد صحیح (integer) را بدون ایجاد خطا انجام دهید.

در PHP 7 امکان اعلان نوع (Type Declarations) اضافه شد. این قابلیت اجازه می‌دهد هنگام تعریف یک تابع، نوع داده مورد انتظار را مشخص کنید و با فعال کردن حالت strict در صورت عدم تطابق نوع داده، یک Fatal Error ایجاد خواهد شد.

در فصل PHP Functions بیشتر درباره حالت strict و non‑strict و همچنین اعلان نوع داده‌ها یاد خواهید گرفت.


متغیرها و انواع داده در PHP

در PHP نوع داده به مقدار متغیر بستگی دارد.

Example

$x = 5;      // $x is an integer
$y = "John"; // $y is a string
echo $x;
echo $y;

PHP از انواع داده زیر پشتیبانی می‌کند:

  • string (مقادیر متنی)
  • int (اعداد صحیح)
  • float (اعداد اعشاری)
  • bool (مقادیر true یا false)
  • array (چند مقدار در یک متغیر)
  • object (ذخیره داده‌ها به صورت شیء)
  • null (متغیر خالی)
  • resource (ارجاع به منابع خارجی)
  • mixed (هر نوع مقدار)

استفاده از var_dump() برای دریافت نوع داده

برای به دست آوردن نوع داده و مقدار یک متغیر از تابع var_dump() استفاده می‌شود.

Example

تابع var_dump() نوع داده و مقدار را برمی‌گرداند:

var_dump(5);
var_dump("John");
var_dump(3.14);
var_dump(true);
var_dump([2, 3, 56]);
var_dump(NULL);

اختصاص چند مقدار

می‌توانید در یک خط، یک مقدار را به چند متغیر اختصاص دهید:

Example

در اینجا هر سه متغیر مقدار "Fruit" را دریافت می‌کنند:

$x = $y = $z = "Fruit";

محدوده متغیرها در PHP (Variable Scope)

متغیرهای PHP می‌توانند در هر جای کد PHP تعریف شوند.

محدوده یک متغیر (scope) بخشی از اسکریپت است که متغیر در آن قابل استفاده یا دسترسی است.

در PHP سه نوع محدوده برای متغیرها وجود دارد:

  • global
  • local
  • static

Global Scope

متغیری که خارج از یک تابع تعریف شود دارای محدوده سراسری (GLOBAL SCOPE) است و فقط در خارج از تابع قابل دسترسی است.

Example

متغیر با محدوده global:

$x = 5; // global scope

function myTest() {
  // using x inside this function will not work
  echo "Variable x inside function is: $x";
}

myTest();

echo "Variable x outside function is: $x";

Local Scope

متغیری که داخل یک تابع تعریف شود دارای محدوده محلی (LOCAL SCOPE) است و فقط داخل همان تابع قابل استفاده است.

متغیرهای محلی زمانی ایجاد می‌شوند که تابع فراخوانی شود و زمانی که اجرای تابع پایان یابد حذف می‌شوند.

Example

متغیر با محدوده local:

function myTest() {
  $x = 5; // local scope
  echo "Variable x inside function is: $x";
}

myTest();

// using x outside the function will not work
echo "Variable x outside function is: $x";

Static Scope

به طور معمول وقتی اجرای یک تابع پایان می‌یابد، همه متغیرهای آن حذف می‌شوند.
اما گاهی می‌خواهیم یک متغیر محلی حذف نشود و مقدار آن برای دفعات بعدی تابع حفظ شود.

برای این کار هنگام تعریف متغیر از کلمه کلیدی static استفاده می‌کنیم.

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

نکته: این متغیر همچنان محلی (local) باقی می‌ماند.

Example

function myTest() {
  static $x = 0; // static scope
  echo $x;
  $x++;
}

myTest();
myTest();
myTest();

کلمه کلیدی global در PHP

کلمه کلیدی global برای دسترسی به یک متغیر global داخل یک تابع استفاده می‌شود.

برای این کار باید قبل از نام متغیر در داخل تابع از global استفاده کنید.

Example

$x = 5;
$y = 10;

function myTest() {
  global $x, $y;
  $y = $x + $y;
}

myTest();
echo $y; // outputs 15

متغیر سراسری $GLOBALS

PHP تمام متغیرهای سراسری را در یک آرایه به نام $GLOBALS ذخیره می‌کند.
ایندکس این آرایه نام متغیر است.

این آرایه داخل توابع نیز قابل دسترسی است و می‌توان از آن برای به‌روزرسانی مستقیم متغیرهای global استفاده کرد.

مثال بالا را می‌توان به این شکل نیز نوشت:

Example

$x = 5;
$y = 10;

function myTest() {
  $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}

myTest();
echo $y; // outputs 15