دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / نحو نگارش (PHP Syntax)

نحو نگارش (PHP Syntax)

30 دقیقه Article

قوانینِ بازی: نحو نگارش (Syntax) در PHP 📜🔍

مانند هر زبانِ دیگری، PHP هم گرامرِ خاصِ خودش را دارد. رعایتِ این قوانین برای جلوگیری از خطاهایِ Parse Error حیاتی است.

۱. حساسیت به حروف (Case Sensitivity)

در PHP، دستوراتِ پیش‌فرض (مثل ECHO, if, while) حساس به حروف نیستند. اما نامِ متغیرها به شدت حساس هستند!

{code_block('$color = "red";\necho $COLOR; // این کار خطا می‌دهد یا متغیر دیگری است')}

۲. نقطه-ویرگول (Semicolon) ؛

فراموش کردنِ ; در انتهایِ هر دستور، رایج‌ترین دلیلِ توقفِ کدهایِ PHP است. هر خطِ دستوری باید پایانِ خود را اعلام کند.

۳. تگِ پایانی ?>

اگر فایل شما فقط شامل کدهایِ PHP است، بهترین راهکارِ استاندارد (PSR-12) این است که تگِ پایانی را نگذارید. این کار از ایجاد فاصله‌هایِ ناخواسته‌یِ خروجی جلوگیری می‌کند.

فاصله سفیدی (Whitespace): PHP نسبت به فاصله‌ها بی‌خیال است، اما برایِ خواناییِ کد (Clean Code)، استفاده از ۲ یا ۴ فاصله برای تورفتگی‌ها الزامی است.

یک کدِ استاندارد:

{code_block('$name = "Saman";\necho "Hello " . $name;')}
ترکیب با HTML: همیشه سعی کنید کدهایِ منطقیِ سنگین را بالایِ فایل نگه دارید و در بخشِ HTML فقط مقادیر را چاپ کنید.
<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
سوال تمرین

کد زیر دارای یک خطایِ نگارشی (فراموشی سمی‌کالن) است. آن را اصلاح کنید.

پاسخ تمرین
PHP
<?php
$txt = "PHP Syntax";
echo $txt;
?>

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

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