首頁  >  文章  >  php教程  >  [麦先生]PHP5.4以上更新的伪"多继承"--trait语法

[麦先生]PHP5.4以上更新的伪"多继承"--trait语法

WBOY
WBOY原創
2016-06-06 09:32:311450瀏覽

       在PHP低版本中,类是无法实现多继承的,因而,我们在想要达到多继承效果时就要考虑到"链式继承",在高版本PHP中更新了trait语法,以实现"所谓的多继承"

       

 

trait PHP

{

      public function pcode()

{

echo '我可以编写PHP代码';

}

}

trait Java

{

public function jcode()

{

echo '我可以编写JAVA代码';

}

}

class Stu

{

use PHP , Java;

}

$stu = new Stu;

$stu->pcode();  //输出结果我可以编写PHP代码

$stu->jcode(); //输出的结果是我可以编写PHP代码 我可以编写JAVA代码;  实现了所谓的多继承

 

 

 

但是需要注意的是如果两个方法名相同就会出现报错: "Trait method can has not been applied, because there are collisions with other trait methods on App\User";

解决方案:在User.php下起别名

    

class User extends Model implements AuthenticatableContract,
AuthorizableContract,
CanResetPasswordContract
    {
             use Authenticatable, Authorizable,EntrustUserTrait, CanResetPassword{
            EntrustUserTrait::can as may;
           Authorizable::can insteadof EntrustUserTrait;

    }

 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn