PHP5.4.0新特性研究
1、内建Web Server
这的确是个好的改进,大大的方便了开发人员。以后开发机不装nginx,httpd也行
cd $PHP_INSTALL_PATH ./bin/php -S <addr>:<port> -t <docroot>
如:
前台运行:
./bin/php -S localhost:80 -t /data/www/
后台运行:
./bin/php -S localhost:80 -t /data/www/ >> /tmp/access.log 2>&1 &
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 " "; echo $app->set2('doo', 'Hello world!'); echo $app->get('doo'); echo " ";
结果:
Hello world!
Hello world set by App class!
很像多继承,只是它的实现,跟多继承不同,可以参看官方文档说明。
4、上传进度反馈支持
上传进度会存储在SESSION中(默认开启,可在php.ini中修改),也就是说,以后可以用Ajax结合PHP来做上传进度条了。
还有很多其他特性,有兴趣的可以去官网查看,不在此提了。