دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / متغیرها (PHP Variables)

متغیرها (PHP Variables)

30 دقیقه Article

متغیرها: کانتینرهایِ هوشمندِ داده 📦💎

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

قوانینِ نام‌گذاری متغیرها:

  • حتماً باید با $ شروع شود.
  • باید با حرف یا _ شروع شود، نه عدد.
  • فقط شامل حروف، اعداد و _ است.
  • حساس به حروف: $age با $AGE متفاوت است.

حوزه‌یِ متغیرها (Scope) 🔭

اینجا جایی است که PHP کمی متفاوت عمل می‌کند. ۳ نوع حوزه داریم:

  1. Local: تعریف شده داخل تابع (بیرون در دسترس نیست).
  2. Global: تعریف شده بیرون از تابع (داخلِ تابع در دسترس نیست مگر با کلمه global).
  3. Static: متغیری که بعد از اتمام تابع، مقدارش را نگه می‌دارد.
LOOSELY TYPED: در PHP لازم نیست به متغیر بگویید چه نوع داده‌ای است. PHP خودش بر اساسِ مقداری که به آن می‌دهید، نوعش را تشخیص می‌دهد.

استفاده از کلیدواژه Global:

{code_block('$x = 5;\nfunction test() {\n global $x;\n echo $x; // حالا به متغیر بیرون دسترسی داریم\n}')}
آرایه‌یِ $GLOBALS: تمام متغیرهایِ سراسری در یک آرایه‌یِ مرکزی به نام $GLOBALS['variable_name'] ذخیره می‌شوند.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: کالبدشکافی زبان PHP و موتور Zend 🐘⚙️

درکِ عمیقِ PHP نیازمند آشنایی با آن چیزی است که در پشتِ صحنه اتفاق می‌افتد. PHP یک زبانِ تفسیری (Interpreted) است که توسط موتور قدرتمند Zend Engine اجرا می‌شود.

۱. چرخه عمر درخواست (Request Lifecycle)

در هر بار لود شدنِ صفحه، PHP مراحلِ زیر را طی می‌کند:

  • Lexing/Scanning: تبدیلِ کدها به توکن‌هایِ معنادار.
  • Parsing: ساختِ یک ساختارِ درختی از کدها (AST).
  • Compilation: تبدیلِ درختِ کد به OpCodes (دستورالعمل‌هایِ سطحِ پایین).
  • Execution: اجرایِ OpCodeها توسط مفسرِ Zend.

۲. مدیریت حافظه (Zend Memory Manager)

PHP برخلافِ زبان‌هایی مثل C، مدیریتِ حافظه را به صورتِ خودکار انجام می‌دهد. با استفاده از تکنیکِ Reference Counting و یک Garbage Collector هوشمند، اشیاء و متغیرهایی که دیگر استفاده نمی‌شوند را از حافظه پاک می‌کند تا سرور دچارِ کراش نشود.

۳. سیستمِ تایپِ پویا (Dynamic Typing)

در PHP، متغیرها نوعِ ثابتی ندارند. این انعطاف‌پذیری به لطفِ ساختارِ داده‌ای به نام zval (Zend Value) ممکن شده است که در هر لحظه می‌تواند اطلاعاتی درباره نوع و مقدارِ داده را در خود نگه دارد.

نکته مهندسی: برایِ افزایشِ چشمگیرِ سرعتِ برنامه‌هایِ PHP، همیشه از OPcache استفاده کنید. این قابلیت باعث می‌شود کدهایِ کامپایل شده (OpCodes) در RAM ذخیره شوند و در درخواست‌های بعدی نیاز به کامپایلِ مجدد نباشد.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تعریف متغیر Easy
سوال تمرین

یک متغیر به نام myVar تعریف کنید و مقدار عددی 100 را به آن بدهید. سپس آن را با echo چاپ کنید.

پاسخ تمرین
PHP
<?php
$myVar = 100;
echo $myVar;
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.