TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #25 725
کلاس های readonly در PHP به شما اجازه می‌دهد ویژگی‌هایی در کلاس‌ها تعریف کنید که فقط می‌توانند در زمان ساخت شیء مقداردهی اولیه شوند و پس از آن، تغییرناپذیر هستند. این ویژگی برای تعریف کلاس‌هایی که داده‌های آن‌ها نباید تغییر کنند، بسیار مفید است. به این ترتیب، readonly در PHP، شما را قادر می‌سازد تا ویژگی‌های فقط‌خواندنی در کلاس‌هایتان داشته باشید.

نحوه تعریف:
یک کلاس readonly با استفاده از کلمه کلیدی readonly قبل از کلمه class در تعریف کلاس ایجاد می‌شود:
readonly class MyClass
{

}

کاربردها:
کلاس
‌های Read-Only به شما اجازه می‌دهند که اشیاء‌ای با ویژگی‌هایی که فقط برای خواندن هستند، ایجاد کنید. این ویژگی به ویژه برای مواردی مفید است که می‌خواهید اطمینان حاصل کنید داده‌های یک شیء پس از ایجاد آن، تغییر نکنند. این موضوع می‌تواند در برنامه‌نویسی نرم‌افزار برای محافظت از داده‌ها و جلوگیری از تغییرات ناخواسته مفید باشد.

تفاوت ها با کلاس عادی:
1- پراپرتی ها در کلاس های readonly نمیتوانند مقداردهی شوند یا مقدار انها را حذف کرد:
 readonly class MyClass { /* … */ }

$myClass = new MyClass(/* … */);

// Error :Cannot declare dynamic properties in 'readonly' class
$myClass->title = 'other';
unset($myClass->title);


2- تعریف پراپرتی ها در کلاس readonly تنها با تعریف تایپ آنها امکان پذیر است:
readonly class MyClass
{
public string $title;

// Error: 'readonly' property must have type specified
public $mixed;
}


3- از آنجایی که ویژگی های readonly نمی توانند static باشند، کلاس های readonly نمی توانند هیچ ویژگی static داشته باشند:
readonly class MyClass
{
// Error: Cannot declare 'static' properties in 'readonly' class
public static string $title;
}


4- ویژگی‌های یک کلاس readonly نمی‌توانند مقدار پیش‌فرض داشته باشند مگر اینکه از promoted properties استفاده کنید:
readonly class MyClass
{
// Error: 'readonly' property cannot have default value
public string $title = 'default';
}

// promoted properties:
readonly class MyClass
{
public function __construct(
public string $title = 'default', // This works
) {}
}


5- نمیتوان یک کلاس عادی را با readonly ادغام (extends) کرد مگر هر دو کلاس readonly باشند:
readonly class MyClass { /* … */ }

// Error: Non-'readonly' class cannot extend readonly class 'MyClass'
class OtherClass extends MyClass { /* … */ }


مثال:
فرض کنید یک کلاس برای مدیریت توکن ها دارید، و نمیخواید توکن ها تغییر کنند.
در این صورت میتوانید از readonly class استفاده کنید تا اطمینان داشته باشید در طول اجرای برنامه توکن تغییر نمیکند:
readonly class Token
{
public string $token;
public function __construct()
{
$this->token = 'ASDHAJKSHJDKHAJKSDHKAJSDJKADJKKJHDKJ';
}
}
echo (new Token())->token;


👤 AmirHossein

💎 Channel: @DevelopixPHP
  • ❤ 8
  • 👍 1
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →