PHP5.3、5.4、5.5、5.6各版本重要更新简述(上)
程序员文章站
2022-06-07 10:23:49
...
今天无事,偶尔看到phpstorm中的版本选择处有关于各版本的区别的简短描述,于是总结一下。
PHP5.3相对于之前版本,最大区别也就是命名空间和匿名函数了,这在平时开发和各大框架中都用的比较多了,就不再详述了。
PHP5.4的主要更新是数组简写语法格式和traits了。
关于数组简写,说起来也挺简单,只是为数组添加了一个新的声明方法,如下:
// PHP5.4之前$array = array( "foo" => "bar", "bar" => "foo",);// 自 PHP 5.4 起$array = [ "foo" => "bar", "bar" => "foo",];
而关于PHP5.4的traits就比较少见了,代码说明:
class Base { public function sayHello() { echo 'Hello '; }}trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; }}class MyHelloWorld extends Base { use SayWorld;}$o = new MyHelloWorld();$o->sayHello();
说明一下:结果是'Hello World!',从基类继承的方法会被trait中的同名方法覆盖,当前类中的方法覆盖trait中的同名成员;如果trait中定义了属性,则当前类中不能定义同名属性;trait中也可以定义抽象方法和静态成员。可以使用多个trait,它们之间用逗号分隔,如下:
use SayHello1,SayHello2;
如果SayHello1和SayHello2中有同名成员,会产生致命错误,解决方法如下:
use SayHello1,SayHello2 { SayHello1::sayHello insteadof SayHello2; // 意思是用SayHello1中的sayHello方法代替SayHello2中的同名方法,注:此处的sayHello不一定是静态方法 // ... // 或 SayHello1::sayHello as sayHello1; // 为其另取一个名字,也可解决}
PHP5.5中的变化主要是异常处理中添加finally关键字和生成器generator。
关于finally,代码说明:
try { throw new ErrorException('Some Error Message');} catch (ErrorException $e) { echo $e->getMessage()."111 \n";} catch(Exception $e) { echo $e->getMessage()."222 \n";} finally { echo 'finally';}
不管产没产生异常,都会输出finally。
关于生成器generator,我看了看手册,不明觉厉。明白了再加上...
今天先到这儿......