Traits和类组合的语义以减低复杂性的不二等秘书技定义,PHP 落成了代码复用的一个主意

事实上,PHP
作为一门编程语言存在的问题之一,就是你只能使用单继承。这意味着一个类只能从另一个类中继承。例如,可能希望从几个不同的类继承方法,以防止代码重复。在
PHP 5.4 中 一个新的语言特性被添加进来,这就是众所周知的 Traits,它在
Laravel 框架中被广泛使用。

Trait是一种在单继承语言中重用代码的机制。Trait旨在通过使开发人员能够在生活在不同类层次结构中的多个独立类中自由地重用方法集来减少单继承的某些限制。Traits和类组合的语义以降低复杂性的方式定义,并避免了与多重继承和Mixins相关的典型问题。

本文实例讲述了PHP
Trait代码复用类与多继承实现方法。分享给大家供大家参考,具体如下:

本文实例讲述了Laravel中Trait的用法。分享给大家供大家参考,具体如下:

PHP 官方网站给出了 Traits 的定义,如下:

Trait类似于类,但仅用于以细粒度和一致的方式对功能进行分组。无法自行实例化Trait。它是对传统继承的补充,可以实现行为的横向组合;
也就是说,类成员的应用程序不需要继承。

澳门新浦京8455com,前言

看看PHP官方手册对Trait的定义:

“ Trait 是单继承语言中的一种代码复用机制。 Trai
的目的是减少单继承语言的一些限制,能让开发者自由的重用在不同的类层次结构下几个独立类中的方法。
Trait
的语义组合与类的定义在某种程度上减少了代码的复杂度,避免了与多继承和
Mixins 相关的一些典型问题。

什么是PHP Trait?

众所周知,一直以来PHP和很多语言一样是单继承的语言,但是常常在编码过程中,我们需要在当前类中使用两个或两个以上的其他类的方法,这种情况下继承就不能实现,而往往采用new方式实例化很多要用到的类,这样就会很影响代码的结构和开发规范。于是Trait类诞生了,它是一种代码复用的语法,能够实现一个类中引用多个其他类的方法。

自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

Trait 与类非常相似,但它的目的仅仅是用更好、一致的方式汇聚一些方法。
Trait
本身不能被实例化。除了传统继承之外,它能水平组合行为,换言之,类的应用程序不需要继承。”

Trait仅仅是您希望包含在另一个类中的一组方法。与抽象类一样,Trait不能自己实例化。

一、概念

Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait
为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits
和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类相关的典型问题。

PHP Traits是什么?

Trait的一个例子可以是:

PHP官方手册对Trait的描述是:Trait是为类似PHP的单继承语言而准备的一种代码复用机制。Trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用method。Trait和Class组合的语义定义了一种减少复杂性的方式,避免传统多继承和Mixin类相关典型问题。Trait和Class相似,但仅仅旨在用细粒度和一致的方式来组合功能。无法通过trait自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用的几个Class之间不需要继承。

Trait 和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Trait
不能通过它自身来实例化。它为传统继承增加了水平特性的组合;也就是说,应用类的成员不需要继承。

Trait 是一组简单的包含在另一个类中的方法。 Trait
就像一个抽象类一样,无法单独实例化。

trait SharePost { public function share { return 'share this post'; } }

二、Trait类的使用

官方手册也举了两个例子:

一个 Trait 示例就像下面这样:

然后你可以把这个trait 包含在其他类中,就像这样:

简单地讲,Trait就是一种不同于继承的语法,定义一个trait类,在其他类中使用它则是采用use关键字,有点类似于命名空间的用法,但是含义不同。use关键字在一个类中引入Trait类后,相当于require或include了一段代码进来,不同之处在于use的Trait类与当前类是可以看做同一个类的,即当前类可以用$this关键字调用Trait类的方法。

Trait用法示例

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图