PHP5.4.0新特性研究

时间:2022-10-19 20:52:45

PHP5.4.0新特性研究

1、内建Web Server
 这的确是个好的改进,大大的方便了开发人员。以后开发机不装nginx,httpd也行

cd $PHP_INSTALL_PATH
./bin/php -S <addr>:<port> -t <docroot>

如:
前台运行:

./bin/php -S localhost: -t /data/www/ 

后台运行:

./bin/php -S localhost: -t /data/www/ >> /tmp/access.log >& &

2、数组定义,增加了一种简便写法

$arr1 = array(1, 2, 3);
$arr2 = [1, 2, 3]; // 新增简便写法 print_r($arr1);
print_r($arr2); var_dump($arr1 === $arr2);

结果:

Array
(
[0] => 1
[1] => 2
[2] => 3
)
Array
(
[0] => 1
[1] => 2
[2] => 3
)
bool(true)

熟悉javascript的同学,应该对以上这种写法相当熟悉,呵呵。

3、Traits特性

traits,既有部分接口的特性,又有部分类的特性,可以说是他们杂交的产物。

trait Object {
public function get($key) {
return $GLOBALS[$key];
}
} trait Common {
public function set($key, $val) {
$GLOBALS[$key] = $val;
} public function set2($key, $val) {
$GLOBALS[$key] = $val;
}
} class App {
// 引入trait(类似于多继承)
use Object, Common; /**
* 此方法会覆盖trait中的set2方法(类的重载特性)
*/
public function set2($key, $val) {
$GLOBALS[$key] = 'Hello world set by App class!';
}
} $app = new App();
$app->set('foo', 'Hello world!');
echo $app->get('foo');
echo "\n";
echo $app->set2('doo', 'Hello world!');
echo $app->get('doo');
echo "\n";

结果:

Hello world!
Hello world set by App class!

很像多继承,只是它的实现,跟多继承不同,可以参看官方文档说明。

4、上传进度反馈支持

上传进度会存储在SESSION中(默认开启,可在php.ini中修改),也就是说,以后可以用Ajax结合PHP来做上传进度条了。

还有很多其他特性,有兴趣的可以去官网查看,不在此提了。