网站建设资讯

NEWS

网站建设资讯

PHP中trait的基础语法-创新互联

小编给大家分享一下PHP中trait的基础语法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联公司是一家专注于网站设计制作、成都网站设计与策划设计,霍林郭勒网站建设哪家好?创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:霍林郭勒等地区。霍林郭勒做网站价格咨询:028-86922220

 类中的某些成员如何才能被其他类使用呢?使用继承的话,这继承链也太长了,php提供了代码复用技术trait。

1.定义Trait是为类似 PHP 的单继承语言而准备的一种代码复用机制。trait可以使得单继承语言拜托为了复用而不得不继承的尴尬,让面向对象变得更加纯粹。

2.基础语法

trait是一种类似class的关键字。

a,"
";         }         public static function getB()         {                echo self::$b,"
";         }     } ?>

trait是用来实现代码的复用的,不可以被实例化也不可以被继承(不是类)。

 3.trait的使用

trait只是一段代码的集合,使用时必须要使用use进行引用。


a,"
";         }         public static function getB()         {                echo self::$b,"
";         }     }          class A{         use Eat;         public function getC()         {             echo $this->a,"
";         }     }     $boy=new A();     $boy->getC();     $boy->getA();     $boy->getB(); ?>

一个类可以使用多个trait。

 4.trait使用的问题

  a.如果同时引入的多个trait中有同名属性,那么会产生冲突。

a;
        }
    }

    $example=new A3();
  

?>

b.如果同时引入的多个trait中有同名方法,那么会产生冲突,有两种方案解决如A3、A4。

";
       }
    }
    trait A2{
       public $b=22;
       public function eat(){
        echo "A2中eat()方法","
";       }     }     class A3{         use A1,A2{           A1::eat insteadOf A2; //A1中的eat替代A2中的eat         }     }     class A4{         use A1,A2{             A1::eat insteadOf A2;//A1中的eat替代A2中的eat             A2::eat as eat2;     //A2中的eat取别名eat2           }     }     $example=new A3();     $example->eat();     $example=new A4();     $example->eat2(); ?>

c.同名覆盖问题:如果类中有与引入的trait同名成员,会有不同处理:

  • 属性:不允许重名,即类中不允许定义与trait中同名的成员属性(静态属性也一样)。

  • 方法:类覆盖trait。

d.继承覆盖问题:如果类中在使用trait的同时,也是继承自父类,而trait中与父类中有同名方法,那么trait中将覆盖父类同名方法;如果要访问父类方法,可以在trait同名方法中使用parent关键字访问父类同名方法。

eat();
?>

e.trait自己不能访问,只是用来给其他类提供代码复用的,因此允许类在使用trait时更高里面方法的访问控制权:在as之后,使用目标访问修饰限定符。

eshow();								//eat
?>

f.trait中可以使用抽象方法,用来规范使用类必须实现对应抽象方法:使用类要么为抽象类,要么就必须实现抽象方法。

以上是“PHP中trait的基础语法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


名称栏目:PHP中trait的基础语法-创新互联
转载来于:http://cdweb.net/article/jpspd.html