首页建站经验 PHP中的traits简单使用实例

PHP中的traits简单使用实例

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

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

<?php

trait myTrait{

function traitMethod1(){}

function traitMethod2(){}

}

//然后是调用这个traits,语法为:

class myClass{

use myTrait;

}

//这样就可以通过use myTraits,调用Traits中的方法了,比如:

$obj = new myClass();

$obj-> traitMethod1 ();

$obj-> traitMethod2 ();

>

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

// Class Client

class Client {

private $address;

public getAddress() {

return $this->address;

}

public setAddress($address) {

$this->address = $address;

}

}

class Business extends Client{

//这里可以使用address属性

}

// Class Inpidual

class Inpidual 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 Inpidual

class Inpidual{

use Address;

//这里可以使用address属性

}

// Class Order

class Order{

use Address;

//这里可以使用address属性

}

这样就方便多了!

本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/jianzhan/jingyan/16709.html
上一篇Ruby中操作文件的方法介绍
下一篇 递归实现php数组转xml的代码分享
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部