検索
ホームページphp教程php手册PHP中的traits简单使用实例

PHP中的traits简单使用实例

   这篇文章主要介绍了PHP中的traits简单使用实例,本文着重讲解traits的语法、traits有什么作用、什么情况下使用traits,需要的朋友可以参考下

  PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。

  Traits可以理解为一组能被不同的类都能调用到的方法集合,但Traits不是类!不能被实例化。先来例子看下语法:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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分别继承之,如下代码:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

// 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,用来定义这些公共属性。

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

// 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属性

}

  这样就方便多了!

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール