- 浏览: 7851910 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
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分别继承之,如下代码:
但假如又有一个叫order类的,需要访问同样的地址属性,那怎么办呢?order类是没办法继承client类的,因为这个不符合OOP的原则。这个时候traits就派上用场了,可以定义一个traits,用来定义这些公共属性。
// Trait Address
trait Address
{
private $address;
public getAddress() {
return $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属性
}
看,这样就方便很多了
懂毛线,因为你这个破问题,导致我朋友纠结半天。
client是客户的意思,客户类包含一些客户的信息什么的,很多的属性,比如客户分男女,客户有地址,客户有电话,客户有xxxx属性和方法;公司和个人都属于客户吧。订单是你客户?订单是你客户?
能不能思考一下啊,醉了。
的目的,是为了有的场合想用多继承,但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() {
return $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属性
}
看,这样就方便很多了
评论
3 楼
jjiale
2016-12-29
hnlixf 写道
但假如又有一个叫order类的,需要访问同样的地址属性,那怎么办呢?order类是没办法继承client类的,因为这个不符合OOP的原则。
order没办法继承client类,国为不符合oop的原则。这个能说具体一些吗?不太懂。谢谢
order没办法继承client类,国为不符合oop的原则。这个能说具体一些吗?不太懂。谢谢
懂毛线,因为你这个破问题,导致我朋友纠结半天。
client是客户的意思,客户类包含一些客户的信息什么的,很多的属性,比如客户分男女,客户有地址,客户有电话,客户有xxxx属性和方法;公司和个人都属于客户吧。订单是你客户?订单是你客户?
能不能思考一下啊,醉了。
2 楼
hnlixf
2016-05-27
但假如又有一个叫order类的,需要访问同样的地址属性,那怎么办呢?order类是没办法继承client类的,因为这个不符合OOP的原则。
order没办法继承client类,国为不符合oop的原则。这个能说具体一些吗?不太懂。谢谢
order没办法继承client类,国为不符合oop的原则。这个能说具体一些吗?不太懂。谢谢
1 楼
netkiller.github.com
2012-04-02
php 离我越来越远
发表评论
-
11个php日常用的小tips 代码片段
2014-01-21 20:34 1889http://www.phpzag.com/11-useful ... -
php中的DirectoryIterator和RecursiveDirectoryIterator
2013-07-27 22:50 3473php中,可以用用DirectoryIterator获取指定目 ... -
uccenter中找回创始人密码
2013-03-11 19:12 1869偶然忘记了uccenter中的创始人密码,一查看,其实找回 ... -
php中通过register_shutdown_function记录fatal error
2013-02-09 23:56 2928今天发现php中,如果要记录fatal error的时候, ... -
php中检查是否ajax请求
2013-01-19 09:53 1442$ajax = false; if(!empty ... -
php中检查某个网页地址是否有效能被打开的最简单方法
2012-10-22 16:18 2058php中检查某个网页地址是否有效能被打开的最简单方法,其实可以 ... -
小结几个php操作office的类库
2012-07-20 19:16 19011 phpexcel 最强大完整的类库了,地址在: ht ... -
介绍几个PHP的开源不错的图片类库
2012-07-14 13:11 2843介绍几个PHP的开源不错的图片类库 1 pchart ... -
php中__sleep和__wakeup
2012-06-22 09:39 4480在php中,__sleep和___wakeup是两个分别自 ... -
PHP 5.4正式版重要新特性
2012-05-25 08:34 1627原文发表在:http://tech.it168.com/a20 ... -
用php实现备份数据库ZIP及导出
2012-04-17 08:59 1805经常在有的PHP开源系统中,看到有备份数据库并导出的方法 ... -
PHP Codeigniter 中的_remap方法简介
2012-04-05 21:06 4536在Codeigniter 中,其实有个容易忽略掉的不错的控 ... -
php中的pdo和mysqli的对比选择
2012-03-10 22:25 7112在PHP中,如何选择PDO和mysqli呢?本文做个简单的 ... -
php 5.4中新增加对session状态判断的功能
2012-02-20 12:28 3921在以前的php 版本中,要判断session是否有效,只能 ... -
php curl的几段小应用
2012-02-07 10:10 1778php 的CURL是不错的功能,下面收藏几段不错的片段 1 ... -
php 5.3中的一个type hinting的用法
2012-01-20 11:50 2270今天偶然看php 5.3中的一个特性,叫type hintin ... -
cakephp的分页排序
2012-01-04 10:38 4202cakephp中的分页还是很简单的,下面例子复习下 1 数据 ... -
mongodb+php学习1
2012-01-03 11:51 51881 mongodb启动时,设置启动项 C:\>mon ... -
php中挺好用的strtotime方法
2011-12-20 11:32 1920在PHP中,经常要对日期进行计算,比如要计算一个月前的日期 ... -
php中使用curl发送JSON数据
2011-11-28 13:43 11731在PHP中,可以使用curl去发送JSON数据,例子如下: ...
相关推荐
PHP 5.4中的traits,是新引入的特性,中文还真不知道如何准确翻译好。其实际的目的,是为了有的场合想用多继承,但PHP又没多继承,于是就发明了这样的一个东西。 Traits可以理解为一组能被不同的类都能调用到的...
PHP5.4后新增traits实现代码复用机制,Trait和类相似,但不能被实例化,无需继承,只需要在类中使用关键词use引入即可,可引入多个Traits,用’,’隔开。 (1)Trait简单使用 <?php trait A { public $var1 = '...
PHP是单继承的语言,在PHP 5.4 Traits出现之前,PHP的类无法同时从两个基类继承属性或方法。php的Traits和Go语言的组合功能类似,通过在类中使用use关键字声明要组合的Trait名称,而具体某个Trait的声明使用trait...
在 PHP 5.4 中 一个新的语言特性被添加进来,这就是众所周知的 Traits,它在 Laravel 框架中被广泛使用。 PHP 官方网站给出了 Traits 的定义,如下: “ Trait 是单继承语言(如 PHP )中的一种代码复用机制。 Trai ...
PHP是单继承的语言,在PHP 5.4 Traits出现之前,PHP的类无法同时从两个基类继承属性或方法。Traits的出现解决了这一问题。 1、通过在类中使用use关键字声明要组合的Trait名称,而具体某个Trait的声明使用trait关键词...
Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。 但由于PHP5.4...
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改 PHP5.5:yield, list() 用于 foreach, 细节修改 PHP5.6: 常量增强,可变函数参数,命名空间增强 现在基本上都使用PHP5.3以后的版本,但是...
设计一个Measurement计量单位类型,满足如下要求, 1.当为距离单位,当构造米或者千米等不同距离单位的实例时,统一以米为基本单位,实例调用description函数返回单位...注意:代码实现中运用了模板中的traits技术。
c++_traits Classes which encapsulate properties of types Is this an integer type? An arithmetic type? A pointer type?... Closely related to partial specialization
新特性与改动此次更新的关键新特性,包括:新增traits,更精简的Array数组语法,供测试使用的内建webserver,可以闭包使用的$this指针,实例化类成员访问,PHP 5.4.0 性能大幅提升, 修复超过100个bug. 废除了...
包含内容:traits-6.1.0-cp36-cp36m-win_amd64.whl 安装tvtk需要 VTK-7.1.1-cp36-cp36m-win_amd64.whl numpy-1.12.1+mkl-cp36-cp36m-win_amd64.whl traits-4.6.0-cp36-cp36m-win_amd64.whl mayavi-4.5.0+vtk71-cp36...
Python科学计算三维可视化应用中需要安装TVTK库,traits-4.6.0-cp36-cp36m-win_amd64.whl为安装TVTK库所需要的5个库之一,该库为64位的
traits-4.6.0-cp34-cp34m-win32
traits-6.2.0-cp310-cp310-win32
资源分类:Python库 所属语言:Python 资源全名:link_traits-1.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
英语写作六要素the traits of English writingPPT课件.pptx
PHP 实现代码复用的一个方法 traits新特性_.docx