PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下。

其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客。

1. Buid-in web server
PHP5.4内置了一个简单的Web服务器,这样在做一些简单程序就方便多了,省去了环境配置的工作,特别对于初学者来说。
把当前目录作为Root Document只需要这条命令即可:

1
$ php -S localhost:3300

也可以指定其它路径:

1
$ php -S localhost:3300 -t /path/to/root

还可以指定路由:

1
$ php -S localhost:3300 router.php

参考:PHP: Build-in web server

2. Traits
Traits提供了一种灵活的代码重用机制,即不像interface一样只能定义方法但不能实现,又不能像class一样只能单继承。至于在实践中怎样使用,还需要深入思考。
官网的一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
trait SayWorld {
        public function sayHello() {
                parent::sayHello();
                echo "World!\n";
                echo 'ID:' . $this->id . "\n";
        }
}
class Base {
        public function sayHello() {
                echo 'Hello ';
        }
}
  
class MyHelloWorld extends Base {
        private $id;
  
        public function __construct() {
                $this->id = 123456;
        }
  
        use SayWorld;
}
  
$o = new MyHelloWorld();
$o->sayHello();
  
/*will output:
Hello World!
ID:123456
 */

参考:http://cn.php.net/manual/en/language.oop5.traits.php

3. Short array syntax
PHP5.4提供了数组简短语法:

1
$arr = [1,'james', 'james@fwso.cn'];

4. Array dereferencing

1
2
3
function myfunc() {
    return array(1,'james', 'james@fwso.cn');
}

我认为比数组简短语法更方便的是dereferencing,以前我们需要这样:

1
2
$arr = myfunc();
echo $arr[1];

在PHP5.4中这样就行了:

1
echo myfunc()[1];

5. Upload progress
Session提供了上传进度支持,通过$_SESSION["upload_progress_name"]就可以获得当前文件上传的进度信息,结合Ajax就能很容易实现上传进度条了。

参考:http://www.laruence.com/2011/10/10/2217.html

6. JsonSerializable Interface
实现了JsonSerializable接口的类的实例在json_encode序列化的之前会调用jsonSerialize方法,而不是直接序列化对象的属性。
参考:http://www.laruence.com/2011/10/10/2204.html

7. Use mysqlnd by default
现在mysql, mysqli, pdo_mysql默认使用mysqlnd本地库,在PHP5.4以前需要:

1
$./configure --with-mysqli=mysqlnd

现在:

1
$./configure --with-mysqli

8. 更多
http://cn2.php.net/releases/NEWS_5_4_0_beta2.txt

PHP5.4新特性(转)相关推荐

  1. PHP5.3, PHP5.4, PHP5.5新特性

    因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一些特性,有可能不全,待添加 PHP 5.3中的新特性 ...

  2. [转] php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的

    因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一些特性,有可能不全,待添加 PHP 5.3中的新特性 ...

  3. PHP7相对于PHP5的新特性,学习猿地-整理PHP5.5 ~ PHP7.2 新特性

    PHP5.5 ~ PHP7.2 新特性整理 一.从PHP 5.5.x 移植到 PHP 5.6.x 使用表达式定义常量 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认 ...

  4. php static与self,PHP5.3新特性static与self区别

    很多人都说,PHP 简单,入门门槛较低,但是要学精通确很难.随着 PHP 不断的发展,新特性不断的增加,同时又得兼容老版本 PHP4 的一写语法特征,初学者在学习 PHP 时,显然就不再那么容易了.特 ...

  5. php 5.6 新特性,PHP5.6新特性介绍

    本文将介绍这些特性,并讨论它们可以给开发者带来哪些好处. 常量标量表达式(Constant scalar expressions) 在常量.属性声明和函数参数默认值声明时,以前版本只允许常量值,PHP ...

  6. php phar包require报错,被遗忘的PHP5.3新特性——Phar

    看样子phar应该是山寨jar的吧,不过方便的确是方便许多.使用phar打包PHP代码的话,就可以直接在网上下载phar包,然后像这样直接运行他! $ php foo.phar 我在本地自己做了个测试 ...

  7. PHP 5.3-5.5 新特性

    PHP5.3, PHP5.4, PHP5.5新特性 因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一 ...

  8. php yield 个人小解_PHP5.5新特性之yield理解与用法实例分析

    本文实例讲述了PHP5.5新特性之yield理解与用法.分享给大家供大家参考,具体如下: yield生成器是php5.5之后出现的,yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实 ...

  9. two+few+arguments+php,PHP5.5 ~ PHP7.2 新特性整理

    PHP5.5 ~ PHP7.2 新特性整理 一.从PHP 5.5.x 移植到 PHP 5.6.x 使用表达式定义常量 在之前的 PHP 版本中, 必须使用静态值来定义常量,声明属性以及指定函数参数默认 ...

最新文章

  1. python快速编程入门课后程序题答案-Python编程从零基础到项目实战 完整PPT+习题答案...
  2. Java NIO学习系列七:Path、Files、AsynchronousFileChannel
  3. 51单片机复习:DS1302
  4. Introduce Null Object(引入Null 对象)
  5. IOC操作Bean管理XML方式(注入空值和特殊符号)
  6. 95-230-026-源码-WordCount走读-本地运行SubmitJob的过程
  7. 02-C#入门(枚举、结构等)
  8. 18. web robot
  9. python写出雷霆战机_大一新生苦心研学Java半个月,独立写出雷霆战机到处自诩天才!牛...
  10. fid fopen MATLAB
  11. 中职学校计算机教学参考文献,中职计算机教学论文
  12. mysql使用结巴语句_MySQL 结巴中文分词插件 SqlJieba
  13. 2021年中国企业风险投资发展现状及未来发展趋势分析[图]
  14. 二战计算机技术,重庆大学超强二战跨考计算机技术专业经验,学习方法
  15. 做国内最好的考勤软件,领航软件被评为2007中国软件创新100家典型企业
  16. pdf文件如何生成目录 wps_wps制作pdf文档的详细方法
  17. 免杀的N种姿势-msf篇
  18. QT中获取选中的radioButton的两种方法
  19. 整理的子模块设置清单
  20. 2022.3.11 MATLAB课程作业

热门文章

  1. FPGA之道(78)静态时序分析(四)内部时钟相关时序分析
  2. 【 Verilog HDL 】case, casez, casex 之干货总结
  3. 跟我学Kafka源码Producer分析
  4. Qt学习五 - 对话框
  5. 黄聪:说说JSON和JSONP,也许你会豁然开朗(转)
  6. RepositoryBase文件解析
  7. 关于Talend的Patch分支对应Eclipse开发环境的配置总结.
  8. Google收购安全分析软件厂商Zynamics
  9. 豆瓣FLASHMP3播放器
  10. .NET中防止Access数据库下载