thinkphp5.1學習過程四——trait

<?php
/**
*trait實現了代碼的複用
*而且突破了單繼承的限制
*trait是類不是類,不能實例化
*/
trait Demo1
{
  public function hello1()
  {
    return __METHOD__;
  }
}
trait Demo2
{
  public function hello2()
  {
    return __METHOD__;
  }
}php

class Demo
{
  use Demo1,Demo2;
  public function hello()
  {
    return __METHOD__;
  }
  public function test1()
  {
    return $this->hell1();
  }
  public function test2()
  {
    return $this->hell2();
  }
}
$obj=new Demo();
echo $obj->hello();
echo "<hr>";
echo $obj->hello1();
echo "<hr>";
echo $obj->hello2();
 this

trait類的引用,其實就是把trait類中的代碼複製到類中使用繼承

trait優先級的問題it

一、當前類中的方法與trait類,父類中的方法重名了,怎麼辦?io

二、trait類的優先級是高於同名父類function

三、當多個triat類中有同名的方法,怎麼辦?class

能夠給不一樣的方法取一個別名test

use Demo1,Demo2{引用

Demo1::hello as Demo1Hello;方法

}

相關文章
相關標籤/搜索