تبدیل نوع (PHP Casting)
تغییرِ ماهیت: تبدیلِ نوع (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 و موتور 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) ممکن شده است که در هر لحظه میتواند اطلاعاتی درباره نوع و مقدارِ داده را در خود نگه دارد.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
متغیر $x = 9.99 را دارید. آن را به int تبدیل کنید و خروجی را چاپ کنید.
<?php
$x = 9.99;
echo (int)$x;
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.