PHP5.3、PHP5.4、PHP5.5、PHP5.6的新特性

1. PHP5.3中的新特性

1.1 支持命名空间(namespace)

毫无疑问,命名空间是PHP5.3所带来的最重要的新特性。

在PHP5.3中,可以用命名空间防止代码的冲突,命名空间的分隔符为 \ 反斜线。

1.2 通过static关键字,实现方法的延迟静态绑定

在PHP中,我们可以在类中通过self关键字或者CLASS来判断或调用当前类。但有一个问题,如果我们是在子类中调用,得到的结果将是父类。因为在继承父类的时候,静态成员就已经被绑定了。例如:

<?php    
class A {
        
    public static function who() {
        
        echo __CLASS__;    
    }    
    public static function test() {
        
        self::who();    
    }    
}    
class B extends A {
        
    public static function who() {
        
         echo __CLASS__;    
    }    
}    
B::test();

上面代码的输出结果为:A。这和我们的预期结果不同。

PHP5.3中增加了一个static关键字来引用当前类,即实现了延迟静态绑定:

<?php    
class A {
       
    public static function who() {
       
        echo __CLASS__;    
    }    
    public static function test() {
       
        static::who(); // 这里实现了延迟的静态绑定    
    }    
}    
class B extends A {
       
    public static function who() {
       
         echo __CLASS__;    
    }    
}    
B::test();   
// 输出:B
1.3 支持goto语句

多数计算机程序设计语言中都支持无条件转向语句goto,当程序执行到goto语句时,即转向由goto语句中的标号指出的程序位置继续执行。尽管goto语句有可能会导致程序流程不清晰,可读性减弱,但在某些情况下具有其独特的方便之处,例如中断深度嵌套的循环和 if 语句。

<?php
goto test;
echo '1';

test:
echo '2';
?>
// 运行时会输出 2
1.4 支持闭包

闭包(Closure)函数和Lambda函数的概念来自于函数编程领域。例如JavaScript 是支持闭包和 lambda 函数的最常见语言之一。

在PHP5.3中,可以使用匿名函数或Lambda函数来定义一些临时使用(即用即弃型)的函数,以作为array_map()或array_walk()等函数的回调函数。

1.5 新增两个魔术方法__callStatic()和__invoke()

PHP中原本有一个魔术方法__call(),当调用类中某个不存在的方法时该魔术方法会被自动调用。新增的__callStatic()方法则只用于类的静态方法。当尝试调用类中不存在的静态方法时,__callStatic()魔术方法将被自动调用。

此外,PHP5.3中还新增了__invoke()魔术方法。当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。 如:

<?php
class CallableClass 
{
   
    function __invoke($x) {
   
        var_dump($x);
    }
}
$obj = new CallableClass;
$obj(5);
var_dump(is_callable($obj));
?> 
/* 输出结果:
int(5)
bool(true)
*/
1.6 新增Nowdoc语法结构

就象 Heredoc 结构类似于双引号字符串,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。故非常适合于传递一段PHP代码。

<?php
$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
echo $str;
1.7 const 关键字可用来在类外定义常量
<?php
//PHP中定义常量通常是用这种方式  
define(
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值