PHP – ویژگی‌ها (Traits)

PHP - ویژگی‌ها (Traits) چیستند؟

PHP تنها از وراثت تک‌گانه پشتیبانی می‌کند: یک کلاس فرزند تنها می‌تواند از یک کلاس والد به ارث ببرد.

بنابراین، اگر یک کلاس نیاز به به ارث بردن چندین رفتار داشته باشد چه؟ ویژگی‌های OOP این مشکل را حل می‌کنند.

ویژگی‌ها (Traits) برای اعلام متدهایی استفاده می‌شوند که می‌توانند در چندین کلاس استفاده شوند. ویژگی‌ها می‌توانند متدها و متدهای انتزاعی داشته باشند که می‌توانند در چندین کلاس استفاده شوند و متدها می‌توانند هر نوع دسترسی (public، private یا protected) داشته باشند.

ویژگی‌ها (Traits) با استفاده از کلمه کلیدی trait اعلام می‌شوند:

نحو (Syntax)

<?php
trait TraitName {
  // some code...
}
?>

برای استفاده از یک ویژگی (Trait) در یک کلاس، از کلمه کلیدی use استفاده کنید:

نحو (Syntax)

<?php
class MyClass {
  use TraitName;
}
?>

مثال (Example)

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}
class Welcome {
  use message1;
}
$obj = new Welcome();
$obj->msg1();
?>

توضیح مثال (Example Explained)

اینجا، ما یک ویژگی (Trait) به نام message1 اعلام می‌کنیم. سپس، یک کلاس به نام Welcome ایجاد می‌کنیم. کلاس از ویژگی (Trait) استفاده می‌کند و تمام متدهای موجود در ویژگی در کلاس در دسترس خواهند بود.

اگر کلاس‌های دیگری نیاز به استفاده از متد msg1() داشته باشند، به سادگی از ویژگی message1 در آن کلاس‌ها استفاده کنید. این کار باعث کاهش تکرار کد می‌شود، زیرا نیازی به اعلام مجدد همان متد بارها و بارها نیست.

PHP - استفاده از چندین ویژگی (Using Multiple Traits)

بیایید به یک مثال دیگر نگاه کنیم:

مثال (Example)

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}
trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}
class Welcome {
  use message1;
}
class Welcome2 {
  use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>

توضیح مثال (Example Explained)

اینجا، ما دو ویژگی (Trait) به نام‌های message1 و message2 اعلام می‌کنیم. سپس، دو کلاس به نام‌های Welcome و Welcome2 ایجاد می‌کنیم. کلاس اول (Welcome) از ویژگی message1 استفاده می‌کند و کلاس دوم (Welcome2) از هر دو ویژگی message1 و message2 استفاده می‌کند (ویژگی‌های چندگانه با کاما جدا می‌شوند).

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - تاریخ‌ها (Dates)

JavaScript – تاریخ‌ها (Dates)

آبجکت‌های تاریخ (Date) در جاوااسکریپت آبجکت‌های تاریخ در جاوااسکریپت به ما امکان کار با تاریخ و زمان را می‌دهند....

بیشتر بخوانید
JavaScript - آرایه‌های ثابت (Array Const)

JavaScript – آرایه‌های ثابت (Array Const)

جاوااسکریپت: تعریف آرایه با const در سال 2015، جاوااسکریپت کلمه کلیدی مهمی به نام const را معرفی کرد. این...

بیشتر بخوانید
JavaScript - تکرار آرایه‌ها (Array Iteration)

JavaScript – تکرار آرایه‌ها (Array Iteration)

جاوا اسکریپت: تکرار بر روی آرایه‌ها جاوا اسکریپت روش‌های مختلفی برای تکرار (Iteration) بر روی آرایه‌ها ارائه می‌دهد که...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.