PHP5.3, PHP5.4, PHP5.5新特性
2015-06-23 14:35
791 查看
PHP 5.3中的新特性
一.PHP 5.3中的新特性
1. 支持命名空间 (Namespace)
2. 支持延迟静态绑定(Late Static Binding)
3. 支持goto语句
4. 支持闭包、Lambda/Anonymous函数
5. 新增两个魔术方法__callStatic()和__invoke()
6. 新增Nowdoc语法
7. 在类外也可使用const来定义常量
8. 三元运算符增加了一个快捷书写方式:
9. HTTP状态码在200-399范围内均被认为访问成功
10.支持动态调用静态方法
1.支持命名空间 (Namespace)
毫无疑问,命名空间是PHP5.3所带来的最重要的新特性。有了命名空间的概念,在开发大型站点时,就比较容易设计出灵活的结构,同时避免不同包中的类名或变量名产生冲突。
在PHP5.3之前,惯例的划分Package的办法是通过目录名来分隔代码文件,代码中的类名则用下划线_来表示目录。例如
这样的命名方式被PEAR、Zend Framework及各种PHP项目广泛采用。虽然该方法可以避免不同包或类库中的类名产生冲突,但在书写代码的时候显得较为麻烦和笨拙。
在PHP5.3中,则只需要指定不同的命名空间即可,命名空间的分隔符为反斜杆\。
select.php
调用方法
call.php
在PHP5中,我们可以在类中通过self关键字或者__CLASS__来判断或调用当前类。但有一个问题,如果我们是在子类中调用,得到的结果将是父类。因为在继承父类的时候,静态成员就已经被绑定了。 例如:
A
这和我们的预期不同,我们原来想得到子类的相应结果。
PHP 5.3.0中增加了一个static关键字来引用当前类,即实现了延迟静态绑定:
B
一.PHP 5.3中的新特性
1. 支持命名空间 (Namespace)
2. 支持延迟静态绑定(Late Static Binding)
3. 支持goto语句
4. 支持闭包、Lambda/Anonymous函数
5. 新增两个魔术方法__callStatic()和__invoke()
6. 新增Nowdoc语法
7. 在类外也可使用const来定义常量
8. 三元运算符增加了一个快捷书写方式:
9. HTTP状态码在200-399范围内均被认为访问成功
10.支持动态调用静态方法
1.支持命名空间 (Namespace)
毫无疑问,命名空间是PHP5.3所带来的最重要的新特性。有了命名空间的概念,在开发大型站点时,就比较容易设计出灵活的结构,同时避免不同包中的类名或变量名产生冲突。
在PHP5.3之前,惯例的划分Package的办法是通过目录名来分隔代码文件,代码中的类名则用下划线_来表示目录。例如
<!-- 2 <?php 3 class Zend_Db_Table_Select {} 4 // 表示当前这个类的文件位于Zend/Db/Table/Select目录下 5 ?> 6 -->
这样的命名方式被PEAR、Zend Framework及各种PHP项目广泛采用。虽然该方法可以避免不同包或类库中的类名产生冲突,但在书写代码的时候显得较为麻烦和笨拙。
在PHP5.3中,则只需要指定不同的命名空间即可,命名空间的分隔符为反斜杆\。
select.php
<!-- 2 <?php 3 namespace Zend\Db\Table; 4 class Select {} 5 ?> 6 -->这样即使其它命名空间下存在名为Select的类,程序在调用时也不会产生冲突。代码的可读性也有所增加。
调用方法
call.php
<?php 3 //namespace Zend\Db; 4 include('select.php'); 5 $s = new Zend\Db\Table\Select(); 6 $s->test(); 7 ?>2.支持延迟静态绑定(Late Static Binding)
在PHP5中,我们可以在类中通过self关键字或者__CLASS__来判断或调用当前类。但有一个问题,如果我们是在子类中调用,得到的结果将是父类。因为在继承父类的时候,静态成员就已经被绑定了。 例如:
<?php 03 class A { 04 public static function who() { 05 echo __CLASS__; 06 } 07 public static function test() { 08 self::who(); 09 } 10 } 11 class B extends A { 12 public static function who() { 13 echo __CLASS__; 14 } 15 } 16 B::test(); 17 ?>以上代码输出的结果是:
A
这和我们的预期不同,我们原来想得到子类的相应结果。
PHP 5.3.0中增加了一个static关键字来引用当前类,即实现了延迟静态绑定:
<?php 03 class A { 04 public static function who() { 05 echo __CLASS__; 06 } 07 public static function test() { 08 static::who(); // 这里实现了延迟的静态绑定 09 } 10 } 11 class B extends A { 12 public static function who() { 13 echo __CLASS__; 14 } 15 } 16 17 B::test(); 18 ?>以上代码输出的结果是:
B
相关文章推荐
- vsftpd服务配置
- php怎么判断网页是电脑访问还是手机访问
- php常用正则表达式
- IIS建立FTP站点
- 如何查看php版本
- php 登陆后台验证代码
- php 5.3 配置mssql笔记
- tp 大致执行流程
- Thinkphp 联表查询
- TP 验证登录权限
- 关于Proftpd
- PHP实现在线阅读PDF文件的方法
- php中header设置常见文件类型的content-type
- PHP是什么?
- PHP register_shutdown_function()函数的使用示例
- PHP配置把错误日志以邮件方式发送方法(Windows系统)
- PHP中把错误日志保存在系统日志中(Windows系统)
- PHP中通过trigger_error触发PHP错误示例
- 怎样在IIS下配置PHP,isapi模式php,解决php-cgi.exe占用CPU过多,甚至100%
- PHP获取当前日期和时间的方法