Skip to content

dr-fet91/php-magic-methods

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Magic Methods in PHP 🔮

این پروژه یک تمرین آموزشی برای یادگیری و درک بهتر متدهای جادویی (Magic Methods) در زبان PHP است.

🧩 چی یاد می‌گیریم؟

در این پروژه، شما با نحوه‌ی عملکرد و کاربرد متدهای جادویی زیر آشنا می‌شید:

Property Overloading

  • __get() - گرفتن مقدار ویژگی‌های تعریف‌نشده یا خصوصی
  • __set() - مقداردهی به ویژگی‌های تعریف‌نشده یا خصوصی
  • __isset() - بررسی وجود ویژگی
  • __unset() - حذف ویژگی

Method Overloading

  • __call() - فراخوانی متدهای ناموجود در سطح نمونه
  • __callStatic() - فراخوانی متدهای ناموجود در سطح استاتیک

Object Behavior

  • __toString() - وقتی شی به رشته تبدیل می‌شه
  • __invoke() - وقتی شی به عنوان تابع فراخوانی می‌شه
  • __clone() - وقتی شی clone می‌شه
  • __destruct() - وقتی شی نابود می‌شه

Serialization

  • __sleep() - تعیین ویژگی‌هایی که موقع serialize ذخیره می‌شن
  • __wakeup() - آماده‌سازی شی بعد از unserialize

Debugging

  • __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 دسترسی پیدا کنیم.


📚 منابع

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published