会员登录 | 会员注册 | 意见建议 | 网站地图

站长资源综合门户

当前位置:首页 > 站长学院 > 编程程序 > PHP 5.4正式版重要新特性

PHP 5.4正式版重要新特性

时间:2012-04-27 18:43:42   作者:   来源:   点击:

php

// router.php

if (preg_match("#.php$#", $_SERVER["REQUEST_URI"]))

require basename($_SERVER["REQUEST_URI"]); // serve php file

else if (strpos($_SERVER["REQUEST_URI"], ".") !== false)

return false; // serve file as-is

>

然后再建立一个简单的PHP文件,名字为index.php,如下:

// index.php

echo "Hello Nettuts+ Readers!";

>

然后打开php 5.4的安装目录,找到php.ini,然后在include_path中加入如下这行:

include_path = ".;C:phpPEAR;C:public_html"

步骤2 运行内置的web服务器

首先进行命令行模式下,并且进入php目录,输入如下命令:

php -S 0.0.0.0:8080 -t C:public_html router.php

其中这里指定了任何机器都可以访问这台服务器,并且指定了8080端口,指定了工作监听的路由文件为c:public_html下的router,php文件,在上面的命令行输入后按回车,会出现如下信息提示

则证明内置的服务器已经正确启动了。

这个时候,可以在浏览器中输入http://localhost:8080/index.php进行访问了。

更简洁的数组语法

在php 5.4中,对一些语法上的支持更加显得简洁,比如数组中的声明,现在

支持使用中括号的方法来声明,如下:

$fruits = array("apples", "oranges", "bananas"); // 旧的声明方式

$fruits = ["apples", "oranges", "bananas"]; //php 5.4中新的支持声明方式

// 新的关联数组访问

$array = [

"foo" => "bar",

"bar" => "foo"

];

当然,在php 5.4中,同样支持旧的数组声明方式。

直接对函数返回值进行数组取值

在php 5.4中,支持直接对函数返回值进行数组取值。看个例子,比如:

$tmp = explode(" ", "Alan Mathison Turing");

echo $tmp[1]; // Mathison

在这个例子中,如果是php 5.4之前,要取出上面的字符串中的Mathison的话,必须先用explode函数先返回相关的值,然后再对数组进行取值。而在php 5.4中,可以直接对返回值进行数组进行取值,如下:

echo explode(" ", "Alan Mathison Turing")[1];

这样就方便多了。再比如,加入要获得上面这个字符串的最后一个字符串部分Turing,在php 5.4中可以这样做:

echo end(explode(" ", "Alan Mathison Turing"));

再给出一个复杂点的例子,如下:

function foobar()

return ["foo" => ["bar" => "Hello"]];

echo foobar()["foo"]["bar"]; //输出 Hello

闭包中能使用$this指针

以前的php 版本中,是不能在匿名方法中(也称为闭包)使用$this指针的,而php 5.4中是可以了,例子如下:

class Foo

function hello() {

echo "Hello Nettuts!";

function anonymous()

return function() {

$this->hello(); //这在以前的版本中是不能实现

};

class Bar

function __construct(Foo $o)

$x = $o->anonymous(); // 实际上调用Foo::hello()

$x(); // 执行的是 Foo::hello()

new Bar(new Foo); //输出 Hello Nettuts!

以上的实现方法有点复杂,在php 5.4中,可以更方便写为如下:

function anonymous()

$that = $this;

return function() use ($that) {

$that->hello();

};

现在,不管php.ini中的short_tag标记如何设置,在模板中可以随时使用这样的方式了,从而代替 这样的方式。采用“0b”前缀标识二进制数,现在,如果要使用二进制数,请在前面加上0b的前缀,比如:

echo 0b11111

函数类型提示的增强

由于php是弱类型的语言,因此在php 5.0后,引入了函数类型提示的功能,其含义为对于传入函数中的参数都进行类型检查,举个例子,有如下的类:

class bar {

function foo(bar $foo) {

其中函数foo中的参数规定了传入的参数必须为bar类的实例,否则系统会判断出错。同样对于数组来说,也可以进行判断,比如:

function foo(array $foo) {

foo(array(1, 2, 3)); // 正确,因为传入的是数组

foo(123); // 不正确,传入的不是数组

而在php 5.4中,则支持对callable类型的支持。在以前, 我们如果希望一个函数接受一个回调函数作为参数, 那需要做很多额外的工作来检查是否是可调用的正确的回调函数,例子如下:

function foo(callable $callback) {

则:

foo("false"); //错误,因为false不是callable类型

分享到:

网友评论

热门编程程序