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

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

WBOY
WBOY원래의
2016-06-06 09:32:311449검색

       在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으로 문의하세요.