میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

Trait در PHP

در واقع trait یک روش ارث بری دیگر در کنار روش ارث بری از کلاس هست، به این معنی که trait ها المان هایی در php هستند که می توان با نوشتن و ارث بری از آنها در کلاس های مختلف اصطلاحا کد های reusable داشته باشیم و چندین و چند باره method های خودمون رو ننویسیم

از آنجایی که php یک زبان single inheritance هست به این معنی که فقط می توان از یک کلاس ارث بری (extends) کرد پس اگر شما دارید یک کلاس جدید می نویسید که به ۲ تا کلاس دیگر به عنوان parent نیاز دارد این مورد در php امکان پذیر نیست. پس چطوری این کار رو انجام دهیم؟؟؟

این جا هست که trait ها به این اندازه پرکاربرد شده اند یعنی جایی که به جای نوشتن class ما trait می نویسیم و میتوان چند تا از trait ها رو در class خودمون use کنیم.

همان طور که در کد زیر می بینید trait به سادگی با کلمه trait تعریف می شود و شما مجاز هستید تا انواع property و method ها رو در آن بنویسید.

یعنی دقیقا همان کاری که در نوشتن یک class انجام می دهید اما با این تفاوت که از trait نمی توان instance گرفت و تنها باید در class های دیگر use شود.

در کد زیر یک trait به اسم CreatesApplication ساختیم که یک متد به اسم createApplication دارد :

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

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

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

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

<?php
trait message1 {
public function msg1() {
echo “OOP is fun! “;
}
}

class Welcome {
use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

در اینجا ، ما یک trait  را اعلام می کنیم: message1. سپس ، یک کلاس ایجاد می کنیم: Welcome. کلاس از trait استفاده می کند و تمام متد های موجود در کلاس message1 در کلاس Welcome موجود خواهد بود.

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


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

<?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();
?>

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

 

 


 

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

 

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟