PHP中的traits简单使用实例

文章描述:PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。 Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。先来例子看下语法: trait myTrait{ function traitMethod1(){} function

PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。
Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。先来例子看下语法:

trait myTrait{
 function traitMethod1(){}
 function traitMethod2(){}
//然后是调用这个traits,语法为:
class myClass{
 use myTrait;
//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj- traitMethod1 ();
$obj- traitMethod2 (); 

接下来,我们探究下为什么要用traits,举个例子,比如有两个类,分别为business(商务者)和Individual(个人),它们都有地址的属性,传统的做法是,再抽象出一个这两个类都共同有特性的父类,比如client,在client类中设置访问属性address,business和individual分别继承之,如下代码:

// Class Client 
class Client { 
 private $address; 
 public getAddress() { 
 return $this- address; 
 public setAddress($address) { 
 $this- address = $address; 
class Business extends Client{ 
 //这里可以使用address属性 
// Class Individual 
class Individual extends Client{ 
//这里可以使用address属性 

但假如又有一个叫order类的,需要访问同样的地址属性,那怎么办呢?order类是没办法继承client类的,因为这个不符合OOP的原则。这个时候traits就派上用场了,可以定义一个traits,用来定义这些公共属性。

// Trait Address
trait Address{
 private $address;
 public getAddress() {
 eturn $this- address;
 public setAddress($address) {
 $this- address = $address;
// Class Business
class Business{
 use Address;
 // 这里可以使用address属性
// Class Individual
class Individual{
 use Address;
 //这里可以使用address属性
// Class Order
class Order{
 use Address;
 //这里可以使用address属性

这样就方便多了!

本文链接:
发布时间:2022-09-22 04:53:36
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 12 条评论,68人围观)
结节性硬化症V铁粉24 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
中文还真不知道如何准确翻译好
成都环球购物中心V铁粉3 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
这个时候traits就派上用场了
东恒阳光嘉园V铁粉14 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
这个时候traits就派上用场了
导航代码V铁粉4 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
需要访问同样的地址属性
airchinacargoV铁粉2 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
我们探究下为什么要用traits
雷震子V铁粉4 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
但PHP又没多继承
文件解压V铁粉6 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
其实际的目的
51766V铁粉15 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
那怎么办呢?order类是没办法继承client类的
眼保健操图V铁粉20 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
再抽象出一个这两个类都共同有特性的父类
洒洒水啦V铁粉10 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
// Trait Address trait Address{ private $address; public getAddress() { eturn $this- address; public setAddress($address) { $this- address = $address; // Class Business class Business{ use Address; // 这里可以使用address属性 // Class Individual class Individual{ use Address; //这里可以使用address属性 // Class Order class Order{ use Address; //这里可以使用address属性 这样就方便多了! 本文链接:
洛东小区二手房V铁粉6 minutes ago Google Chrome 93.0.4577.82 Windows 10 x64
先来例子看下语法: trait myTrait{ function traitMethod1(){} function traitMethod2(){} //然后是调用这个traits

最近发表

随便看看

热门文章

标签列表