انواع داده (PHP Data Types)
انواع داده: تنوعِ اطلاعات در PHP 🧱🎨
با اینکه PHP زبانی است که نوعِ متغیر را خودش تشخیص میدهد (Dynamic)، اما شناختِ انواعِ داده برایِ دستکاریِ صحیحِ آنها الزامی است.
انواعِ اصلی:
- String: متنها مثل "Hello".
- Integer: اعدادِ صحیح (مثبت یا منفی) بدون ممیز.
- Float: اعدادِ اعشاری (Double).
- Boolean: فقط
trueیاfalse. - Array: مجموعهای از دادهها در یک متغیر.
- Object: نمونهای از یک کلاس (OOP).
- NULL: متغیری که هیچ مقداری ندارد.
- Resource: نگهدارندهیِ لینک به منابعِ خارجی (مثل اتصالِ دیتابیس).
تشخیصِ نوعِ داده (var_dump) 🔍
بهترین دوستِ شما برایِ دیباگ کردن. این تابع نه تنها مقدار، بلکه نوع و طولِ داده را هم برمیگرداند.
{code_block('$x = 10.5;\nvar_dump($x); // float(10.5)')}false در نظر گرفته میشوند. بقیهیِ مقادیر true هستند.
تعریفِ آرایه (روشِ جدید):
{code_block('$cars = ["Benz", "BMW", "Toyota"];')}بخش تخصصی: کالبدشکافی زبان 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) ممکن شده است که در هر لحظه میتواند اطلاعاتی درباره نوع و مقدارِ داده را در خود نگه دارد.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک متغیر با مقدار منطقی true بسازید و با استفاده از تابعِ var_dump جزییات آن را نمایش دهید.
<?php
$isReady = true;
var_dump($isReady);
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.