__isset و __unset برای کنترل دسترسی به ویژگیهایی که نامعلوم یا ناقابل دسترس هستند.مجیک متد
__isset:مجیک متد
__isset زمانی فعال میشود که تابع isset() یا empty() بر روی ویژگیهایی که در کلاس به صورت مستقیم قابل دسترسی نیستند، استفاده شود. این مجیک متد به شما امکان میدهد که تعیین کنید آیا یک ویژگی موجود است یا خیر، حتی اگر این ویژگی به صورت خصوصی یا محافظتشده تعریف شده باشد.این مجیک متد یک ورودی میگیرد که نام پراپرتی است که تابع isset یا empty بر روی آن فراخوانی شده است.
مثال:
تصور کنید یک کلاس با ویژگیهای خصوصی داریم و میخواهیم بررسی کنیم که آیا یک ویژگی خصوصی تنظیم شده است یا خیر:
class User {
private $data = [
'name' => 'John Doe',
'email' => 'john@example.com'
];
public function __isset($property) {
return isset($this->data[$property]);
}
}
$user = new User();
echo isset($user->name) ? 'Name is set' : 'Name is not set';
// Output: Name is setدر این مثال بررسی میشود که پراپرتی name در کلاس User موجود است یا خیر، این درحالی است که این پراپرتی به طور مستقیم در دسترس نیست.
مجیک متد
__unset:مجیک متد
__unset زمانی فعال میشود که تابع unset() بر روی ویژگیهایی که به طور مستقیم دسترسیپذیر نیستند، فراخوانی شود. این به شما اجازه میدهد که تعریف کنید چه اتفاقی باید هنگام حذف یک ویژگی رخ دهد.این مجیک متد یک ورودی میگیرد که نام پراپرتی unset شده میباشد.
مثال:
class User {
private $data = [
'name' => 'John Doe',
'email' => 'john@example.com'
];
public function __unset($property) {
echo "Unsetting property '$property'\n";
unset($this->data[$property]);
}
}
$user = new User();
unset($user->name);در این مثال، وقتی
unset($user->name) فراخوانی میشود، مجیک متد __unset اجرا میشود و پیامی مبنی بر حذف ویژگی نمایش داده میشود و ویژگی مورد نظر را از آرایه دادههای داخلی کلاس حذف میکند. این نیز درحالی است که پراپرتی name مستقیما در کلاسی User موجود نمیباشد.
این دو مجیک متد،
__isset و __unset، ابزارهای مفیدی در PHP هستند که به شما اجازه میدهند تا رفتار دسترسی به ویژگیها و حذف آنها در کلاسهای شما را به شکل کنترلشدهای مدیریت کنید. استفاده از این مجیک متدها به خصوص در مواقعی که با دادههای حساس یا پیچیده کار میکنید، میتواند بسیار مفید باشد. این تکنیکها به شما اجازه میدهند تا یک واسط کاربری برنامهنویسی روانتر و ایمنتری را ارائه دهید، زیرا میتوانید جلوی دسترسی مستقیم به ویژگیهای داخلی کلاس را بگیرید و در عین حال به کاربران اجازه دهید تا تنها عملیاتهای معتبر را روی آنها انجام دهند.👤 AmirHossein
💎 Channel: @DevelopixPHP