این پروژه یک تمرین آموزشی برای یادگیری و درک بهتر متدهای جادویی (Magic Methods) در زبان PHP است.
در این پروژه، شما با نحوهی عملکرد و کاربرد متدهای جادویی زیر آشنا میشید:
__get()- گرفتن مقدار ویژگیهای تعریفنشده یا خصوصی__set()- مقداردهی به ویژگیهای تعریفنشده یا خصوصی__isset()- بررسی وجود ویژگی__unset()- حذف ویژگی
__call()- فراخوانی متدهای ناموجود در سطح نمونه__callStatic()- فراخوانی متدهای ناموجود در سطح استاتیک
__toString()- وقتی شی به رشته تبدیل میشه__invoke()- وقتی شی به عنوان تابع فراخوانی میشه__clone()- وقتی شی clone میشه__destruct()- وقتی شی نابود میشه
__sleep()- تعیین ویژگیهایی که موقع serialize ذخیره میشن__wakeup()- آمادهسازی شی بعد از unserialize
__debugInfo()- نمایش خروجی دلخواه درvar_dump()یاprint_r()
magic_methods/
├── src/
│ └── Models/
│ ├── MagicUser.php
│ └── SessionUser.php
├── index.php
└── README.md
php index.php- PHP >= 8.1
- Composer برای autoload
در کلاس SessionUser از متدهای __sleep() و __wakeup() استفاده شده تا فقط بعضی ویژگیها serialize بشن و بعد از unserialize مقداردهی مجدد بشن. برای این کار از Reflection هم استفاده کردیم تا به ویژگی خصوصی createdAt دسترسی پیدا کنیم.