ترتیب اولویت متدها در trait و class

پرسیده شده
فعالیت 1116 روز پیش
دیده شده 376 بار
0

سلام و درود

ببخشید بنده تو بحث اولویت متدهای trait و class این دو جمله رو خوندم که استاد هم داخل ویدیو گفتن ولی یکم برام گنگ بود تفکیک شون از هم، امکانش هست یکم واضح تر برام توضیح بدید ممنون میشم:

 

1. the methods of a trait override inherited methods from the parent
class
2. the methods defined in the current class override methods from
a trait
فایل پیوست

امیر ابوئی
امیر ابوئی

10 اردیبهشت 00

3
حذف شده

سلام و احترام

به کد زیر دقت کنید

۱ - 

<?php

trait test
{
    public function method1()
    {
        echo "hello from trait";
    }
}


class one 
{
    public function method1()
    {
        echo "hello from class one";
    }
}

class two extends one
{
   use test;
}


$two = new two();

$two->method1();

توی کد بالا همون طور که میبینید کلاس two کلاس one رو extends کرده و در داخل کلاس one و هم trait متدی به اسم method۱ وجود داره که دارن کار خودشون رو انجام میدن. حالا اگه ما بیایم از کلاس two متد method۱ رو صدا بزنیم و چون ما این دو تا متد رو هم داخل one داریم و هم داخل تریت test الویت با trait هستش و متد method۱ از کلاس one رو override میکنه و متن hello from trait رو چاپ میکنه

۲ - حالا شما فرض کنید که ما متد method۱ رو هم دقیقا بیاریم بزاریم داخل کلاس two و دوباره اجرا کنیم

<?php

trait test
{
    public function method1()
    {
        echo "hello from trait";
    }
}


class one 
{
    public function method1()
    {
        echo "hello from class one";
    }
}

class two extends one
{
   use test;

   public function method1()
    {
        echo "hello from current";
    }
}


$two = new two();

$two->method1();

متد method۱ دقیقا اولیت داره هم به متد داخل کلاس پدر (one) و هم تریت (test) و متد خودش رو اجرا میکنه و متن hello from current چاپ میشه

فایل پیوست

امیر صالحی

توسط

امیر صالحی

10 اردیبهشت 00