欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP 5.3 新特性

程序员文章站 2024-02-16 08:39:16
...

1 PHP 5.3中的新 特性 1.1 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新 特性 。 在PHP5.3中,则只需要指定不同的命名空间即可,命名空间的分隔符为反斜杆\ 。 //select.php ? php namespace Zend\Db\Table; class Select { }

1 PHP 5.3中的新特性

1.1 支持命名空间 (Namespace)

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

在PHP5.3中,则只需要指定不同的命名空间即可,命名空间的分隔符为反斜杆\

//select.php
php namespace Zend\Db\Table; class Select { }
?>

这样即使其它命名空间下存在名为Select的类,程序在调用时也不会产生冲突。代码的可读性也有所增加。
调用方法:

//call.php
php    
    //namespace Zend\Db;    
    include('select.php');    
    $s = new Zend\Db\Table\Select();    
    $s->test(); 
?>

1.2. 支持延迟静态绑定(Late Static Binding)

在PHP5中,我们可以在类中通过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 ; 这和我们的预期不同,我们原来想得到子类的相应结果。


PHP 5.3.0中增加了一个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 a;
echo 'Foo'; a: echo 'Bar'; for($i=0,$j=50; $i$i