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 استفاده می‌کند (ویژگی‌های چندگانه با کاما جدا می‌شوند).

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

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

نظرات

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

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