- 浏览: 7942840 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 1936http://www.phpzag.com/11-useful ... -
php中的DirectoryIterator和RecursiveDirectoryIterator
2013-07-27 22:50 3517php中,可以用用DirectoryIterator获取指定目 ... -
uccenter中找回创始人密码
2013-03-11 19:12 1922偶然忘记了uccenter中的创始人密码,一查看,其实找回 ... -
php中通过register_shutdown_function记录fatal error
2013-02-09 23:56 2969今天发现php中,如果要记录fatal error的时候, ... -
php中检查是否ajax请求
2013-01-19 09:53 1471$ajax = false; if(!empty ... -
php中检查某个网页地址是否有效能被打开的最简单方法
2012-10-22 16:18 2094php中检查某个网页地址是否有效能被打开的最简单方法,其实可以 ... -
小结几个php操作office的类库
2012-07-20 19:16 19411 phpexcel 最强大完整的类库了,地址在: ht ... -
介绍几个PHP的开源不错的图片类库
2012-07-14 13:11 2883介绍几个PHP的开源不错的图片类库 1 pchart ... -
php中__sleep和__wakeup
2012-06-22 09:39 4523在php中,__sleep和___wakeup是两个分别自 ... -
PHP 5.4正式版重要新特性
2012-05-25 08:34 1676原文发表在:http://tech.it168.com/a20 ... -
用php实现备份数据库ZIP及导出
2012-04-17 08:59 1849经常在有的PHP开源系统中,看到有备份数据库并导出的方法 ... -
PHP Codeigniter 中的_remap方法简介
2012-04-05 21:06 4588在Codeigniter 中,其实有个容易忽略掉的不错的控 ... -
php中的pdo和mysqli的对比选择
2012-03-10 22:25 7153在PHP中,如何选择PDO和mysqli呢?本文做个简单的 ... -
php 5.4中新增加对session状态判断的功能
2012-02-20 12:28 3969在以前的php 版本中,要判断session是否有效,只能 ... -
php curl的几段小应用
2012-02-07 10:10 1826php 的CURL是不错的功能,下面收藏几段不错的片段 1 ... -
php 5.3中的一个type hinting的用法
2012-01-20 11:50 2319今天偶然看php 5.3中的一个特性,叫type hintin ... -
cakephp的分页排序
2012-01-04 10:38 4232cakephp中的分页还是很简单的,下面例子复习下 1 数据 ... -
mongodb+php学习1
2012-01-03 11:51 52331 mongodb启动时,设置启动项 C:\>mon ... -
php中挺好用的strtotime方法
2011-12-20 11:32 1962在PHP中,经常要对日期进行计算,比如要计算一个月前的日期 ... -
php中使用curl发送JSON数据
2011-11-28 13:43 11796在PHP中,可以使用curl去发送JSON数据,例子如下: ...
相关推荐
1. **短数组语法**:在PHP5.4中,数组定义的语法得到了简化,可以使用`[]`代替`array()`创建数组,如`$arr = [1, 2, 3];` 2. **Traits**:这是一种代码重用机制,类似于其他语言中的“混入”或“多重继承”。Traits...
2. **Traits**:这是一个新的代码复用机制,类似于其他语言中的混入或接口实现,用于解决单继承限制下的代码重用问题。 3. **短数组语法**:PHP5.4开始支持更简洁的数组声明方式,如`[元素1, 元素2]`,使得代码更易...
PHP 5.4作为PHP发展中的一个重要里程碑,引入了许多性能优化和新特性,使得开发速度得到了显著提升。以下是PHP 5.4中的一些关键知识点: 1. **命名空间(Namespaces)**:PHP 5.4引入了命名空间机制,类似于其他...
“特点”章节将重点放在PHP5.4的新增功能和改进上,如 Traits 的引入、闭包的增强、新的数组操作等,这些新特性为开发者提供了更多的编程选择,使得代码更加简洁高效。 “函数参考”是手册的一大亮点,它提供了...
`__DIR__`魔术常量在PHP5.4中被引入,它始终指向包含该常量的文件的目录,无论是在类中还是函数中,这对于获取当前文件路径非常有用。 6. **内置Web服务器** PHP5.4提供了一个内置的命令行Web服务器,用于开发和...
本文将深入探讨PHP 5.4中的中文函数,以及如何在实际开发中运用它们。 ### PHP 5.4 的主要改进 1. **命名空间(Namespaces)**:PHP 5.3引入了命名空间的概念,但在5.4中得到了进一步加强,允许更好的代码组织和...
ECShop是一款基于PHP5.4开发的开源电子商务系统,专为中小企业设计,提供了一套完整的网上商店解决方案。在"ecshop(php5.4修订版)"中,我们重点关注的是其针对PHP5.4版本的优化和调整,这使得ECShop在该版本的PHP...
2. **Traits**:PHP5.4引入了Traits,这是一种代码复用机制,类似于Java的接口和C++的混入类。Traits允许开发者将一组方法定义在一个可重用的块中,然后在多个类中引入,解决了单继承限制下的功能扩展问题。 3. **...
3. **数据库连接优化**:更新数据库连接代码,适应PHP 5.4中的MySQLi或PDO API变化。 4. **错误处理和日志记录**:增强错误处理机制,确保在遇到问题时能提供清晰的错误信息,便于排查。 5. **性能优化**:可能...
3. **PHP 5.4**: PHP 5.4 是 PHP 语言的一个版本,包含了各种性能优化和新特性,如Traits、Short array syntax 和命名空间等。在 PHP 5.4 中使用 ZendLoader.dll 可能需要特定的配置步骤。 4. **Windows环境配置**...
1. **Traits**: PHP 5.4引入了Traits,这是一种代码重用机制,类似于类的混合,允许开发者在多个类之间共享方法,解决了单继承的限制。 2. **短数组语法**: 新的短数组语法`[]`替代了旧的`array()`,使代码更加简洁...
1. **Traits**:PHP 5.4引入了Traits,这是一个代码重用机制,类似于其他面向对象语言中的接口或混入。Traits允许开发者在多个类之间共享行为,解决了单一继承的限制。 2. **命名空间(Namespaces)改进**:在5.3...
在PHP 5.5中,还有一些特性值得一提,比如改进的OPcache(提高脚本执行速度)、Traits(用于代码复用)和更严格的类型提示。这些特性可能间接地影响到ECShop的性能和代码结构。如果你的服务器已经升级到PHP 5.5或更...
2. **Traits**:PHP5.4引入了一种新的代码重用机制——Traits,类似于其他语言的混入(Mixins)。Traits允许在多个类之间共享方法,解决了单继承的限制。通过`trait`关键字定义,然后使用`use`关键字在类中引入。 3...
此版本的 PHP 带来了许多改进,包括更强大的语法特性(如 Traits),提高了性能,以及内置的开发服务器,方便开发者进行本地测试。此外,它还增强了错误处理和异常处理机制,使得代码更加健壮。 MySQL 5.5 是一个高...
本文将深入探讨PHP 5.4在Linux环境中的安装、配置、特性和常见问题。 1. **PHP 5.4的新特性** - ** Traits**:引入了Traits作为代码复用的一种方式,解决了单继承限制的问题。 - **短数组语法**:支持更简洁的...
标题中的“不错的,可能是最新版php5.4”指的是PHP编程语言的一个特定版本,即5.4.14。PHP是一种广泛使用的开源脚本语言,主要用于Web开发,可以嵌入到HTML中,使得动态网页的创建更为便捷。PHP 5.4是该语言的一个...
PHP 5.4是PHP的一个重要版本,它引入了许多新特性,包括改进的性能、增强的语法和新的内置函数,比如 Traits 和 Short Array Syntax,这些都极大地提高了开发效率和代码质量。 Nginx 1.4.2则是一款高性能的HTTP和...
标题中的"ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz"是一个特定版本的 ZendGuardLoader 的软件包,专为 PHP 5.4 构建,适用于基于 Linux 的系统,且依赖于 glibc 2.3 库,支持 x86_64(64位)架构...