PHP中的特性及其功能
性状是一个丹继成语言类似于PHP代码复用机制。为了减少单继承语言的局限性,特质使开发者自由复用方法在单独的类在不同的层次。性状和类组合的语义定义作为一种方法来降低复杂性和避免的典型问题,与传统的多继承和mixin类(mixin)。
特性类似于类,但它只设计以细粒度和一致性的方式组合功能。特性不能自己实例化。它增加了横向特征与传统继承的结合,也就是说,应用程序类的成员不需要继承。
特点是增加了php5.4,它既不接口或类。主要目的是为了解决单继承的语言的局限性,它是一种解决PHP多重继承。例如,需要继承在同一时间两个抽象类将是一件很麻烦的事情,和特质是解决这一问题,它可以添加到一个或多个现有的类,它声明的类可以做什么(这表明其接口功能),还包含一个具体的实现(显示其特色班)
简单的使用
首先,这是,当然,要声明一个特质,和php5.4添加特征关键词
性状first_trait {
功能first_method(代码){ / * * / }
功能second_method(代码){ / * * / }
}
同时,如果要在类中使用该特性,请使用使用关键字。
类first_class {
注 / /这条线,用first_trait声明
使用first_trait;
}
$ obj =新first_class();
一种基于特征执行的方法
($ obj -> first_method); / /有效
($ obj -> second_method); / /有效
使用多个性状
同一类中可以使用多个特性。
性状first_trait
{
功能first_method(){ echo方法;}
}
性状second_trait {
功能second_method(){ echo方法;}
}
类first_class {
使用多个特性
使用first_trait,second_trait;
}
$ obj =新first_class();
有效
($ obj -> first_method); / /打印方法
有效
($ obj -> second_method); / /打印方法
嵌套与特质
同时,特性也可以相互嵌套,例如
性状first_trait {
功能first_method(){ echo方法;}
}
性状second_trait {
使用first_trait;
功能second_method(){ echo方法;}
}
类first_class {
现在使用
使用second_trait;
}
$ obj =新first_class();
有效
($ obj -> first_method); / /打印方法
有效
($ obj -> second_method); / /打印方法
抽象的特征方法(抽象方法)
我们可以声明一个需要在特性中实现的抽象方法,这样使用它的类就必须实现它。
性状first_trait {
功能first_method(){ echo方法;}
在这里,您可以添加调用类的修饰符,它必须实现它。
摘要公共功能second_method();
}
类first_method {
使用first_trait;
功能second_method(){
代码在这里/ ***
}
}
特质的冲突
有多个性状之间不可避免的冲突,这就需要我们去解决。php5.4来与相关的关键字语法语法:替代和使用看,
性状first_trait {
功能first_function(){
从第一个特征回声;
}
}
性状second_trait {
这里的名称和first_trait,会有冲突
功能first_function(){
回声第二个特征;
}
}
类first_class {
使用first_trait,second_trait {
语句中使用first_trait / / first_function置换
/ /在second_trait宣布
first_trait::first_function代替second_trait;
}
}
$ obj =新first_class();
从第一个特性输出:
$ obj -> first_function();
以上是一些基本用法的特点,比较详细可以参考官方手册。这里有一些注意事项。
特质覆盖呼叫类继承父类的方法
属性不能将新实例化用作类。
单个性状可以由多个性状组成。
在一个类中,可以使用多个特性。
属性支持修饰符(修饰符),例如最终的、静态的、抽象的。
我们可以使用而不是作为运营商解决冲突的特点