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

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

WBOY
WBOYOriginal
2016-06-06 09:32:311450browse

       在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;

    }

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn