سلام بچه ها
🌟 یکی از قابلیت های جذابی که تو php 8.4 منتشر شده
Asymmetric property visibility یا قابلیت دید نامتقارن هست!
اما Asymmetric property visibility چیه؟ و کجا بکار میاد؟
❔ این ویژگی جدید به ما این امکان رو میده که دیدهای متفاوتی برای خواندن و نوشتن روی property ها کلاسهامون اعمال کنیم.
😐 ما با استفاده از این قابلیت میتونیم یه property کلاس رو به گونه ای تنظیم کنیم که دسترسی برای خواندن یا نوشتن فقط از داخل خوده کلاس یا کلاس فرزند یا از بیرون قابل تغییر باشه!
فک کنم متوجه شدین
👌
حالا یه مثال بزنیم:
ما یه کلاس بصورت زیر داریم:
class Book
{
public function __construct(
public private(set) string $title,
public protected(set) string $author,
protected private(set) int $pubYear,
) {}
}
اینجا تغریف کردیم که مقادیر title, author و pubYear برای نوشتن (set) حالت های private و protected رو داشته باشن
حالا یه کلاس دیگه میاد و از کلاس Book ارث بری میکنه:
class SpecialBook extends Book
{
public function update(string $author, int $year): void
{
$this->author = $author; // OK
$this->pubYear = $year; // Fatal Error
}
}
خوب!
اینجا ما به یه خطا مواجه میشیم اگر متد update از کلاس SpecialBook رو فراخونی کنیم!
در کلاس Book ویژگی pubYear بصورت private تعریف شده! و فقط توی همون کلاس قابل تعییر هست و ما به خطا(Fatal Error) بر میخوریم!
اما ویژگی author که بصورت protected تعریف شده قابل تغییر هست و ما به خطایی بر نمیخوریم برای این ویژگی!
👑 خوب این ویژگی یه قابلیت جذابه که به امنیت بیشتر داده ها و کاهش نوشتن getter و setter کمک میکنه!
التبه! من سعی میکنم یه مقاله بنویسم و این ویژگی رو بصورت کامل توضیح بدم پس منتظر باشین
🎁
لایک هم یادتون نره جونِ دلا😁
#php
👾 @pishroapp