دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / تبدیل نوع (PHP Casting)

تبدیل نوع (PHP Casting)

30 دقیقه Article

تغییرِ ماهیت: تبدیلِ نوع (Casting) 🎭🛠️

گاهی اوقات نیاز دارید یک متغیر را مجبور کنید که به نوعِ دیگری رفتار کند (مثلاً یک رشته را به عدد تبدیل کنید تا بتوانید روی آن محاسبه انجام دهید).

روشِ مستقیم (Explicit Casting)

با قرار دادنِ نوعِ مورد نظر در پرانتز قبل از نامِ متغیر، این کار انجام می‌شود:

  • (string): تبدیل به رشته.
  • (int): تبدیل به عدد صحیح.
  • (float): تبدیل به اعشار.
  • (bool): تبدیل به منطقی.
  • (array): تبدیل به آرایه.

مثالی از کاربرد:

{code_block('$str = "50";\n$num = (int)$str;\necho $num + 10; // ۶۰')}
تبدیل به آرایه: وقتی یک متغیرِ تکی را به آرایه کست می‌کنید، آن مقدار تبدیل به اولین خانه‌یِ آرایه (ایندکس ۰) می‌شود.
کاهشِ دقت: وقتی یک عددِ اعشاری را به (int) تبدیل می‌کنید، تمامِ رقم‌هایِ بعد از ممیز حذف می‌شوند (بدونِ گرد کردن). برایِ گرد کردن از round() استفاده کنید.

تبدیل به Boolean:

{code_block('$x = "Hello";\n$y = (bool)$x; // true')}
سایت رسمی PHP: برایِ دیدنِ تمامِ حالت‌هایِ کستینگِ پیچیده (مثلاً تبدیلِ یک آبجکت به آرایه)، همیشه به بخشِ Type Juggling در داکیومنتِ رسمی مراجعه کنید.
<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
سوال تمرین

متغیر $x = 9.99 را دارید. آن را به int تبدیل کنید و خروجی را چاپ کنید.

پاسخ تمرین
PHP
<?php
$x = 9.99;
echo (int)$x;
?>

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

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