php5.4 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(商务者)和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属性
}     
时间: 2024-11-05 21:37:09

php5.4 traits的相关文章

PHP5.4中新增的traits

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

在CentOS/RHEL 6.2上使用YUM安装PHP5.4

核心命令 rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm    yum install php54w 以下转自样例: php5.4于2012年5月8号发布,从php5.4.0开始php加入了一些新特色如: Traits支持 内置了一个简单的Web服务器 提供了数组简短语法 直接对函数返回值进行数组取值 最终删除魔术方法及安全模式 你可以在这里看到更新日志. 这里使用 Webtatic EL6的YUM源来安装php5.4,我们首页安装Web

PHP5.2至5.6的新增功能详解

截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5.3 [注].因为 PHP 那"集百家之长"的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征. PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用的功能,匿名函数

PHP5各个版本的新功能和新特性总结

因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征 本文目录:PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束PHP5.2:JSON 支持PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,PharPHP5.4:Short Open Tag, 数组简写形式,Traits, 内置

PHP5.3--PHP7 新特性总结

##PHP5.3 +Added "?:" operator +Added lambda functions and closures +Added support for namespaces ##PHP5.4 +Added short array syntax support ([1,2,3]) +Added array dereferencing support. +Added class member access on instantiation ( e.g. (new foo

【PHP】PHP5.4.0版本ChangeLog详解(上)

前言 随着大量的框架使用composer和namespace,渐渐的线上环境也从之前的5.3变成了5.4或者5.5甚至5.6,随着7月份PHP7的发布,会有更多的公司采用新版本. 之前好久就想写这样的一片文章,来说明下各个版本的差异,这次算是拿出时间了. 这次的是第一篇,目前规划写三篇 PHP5.4.0 PHP5.5.0 PHP5.6.0 一方面是对自己的知识的整理,一方面是对自己的一次提升. 官方说明 官方文档地址 http://php.net/ChangeLog-5.php#5.4.0 详细

php5.0后的新特性

一.PHP5.3 1.支持命名空间 2.增加goto语句 public function testStop() { goto aaa; echo 1; aaa: echo 2; } 3.新增两个魔术方法__callStatic() 调用不存在的或者是私有的静态方法时启用,当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用. public function __invoke() { // TODO: Implement __invoke() method. echo 22

tinkphp5.0 traits 的引入

Traits引入 ThinkPHP 5.0开始采用trait功能(PHP5.4+)来作为一种扩展机制,可以方便的实现一个类库的多继承问题. trait是一种为类似 PHP 的单继承语言而准备的代码复用机制.trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集.trait和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题. 但由于PHP5.4版本不支持trait的自动加载,因此如果是PHP5.4版本,必须手动导入t

PHP5.3-PHP7 新特性总结

##PHP5.3 +Added "?:" operator +Added lambda functions and closures +Added support for namespaces ##PHP5.4 +Added short array syntax support ([1,2,3]) +Added array dereferencing support. +Added class member access on instantiation ( e.g. (new foo