PHP5.3.0 正式版发布及特点总结

网络整理 - 08-19

  PHP5.3.0 一段时间测试版本后正式版6月30号正式发布

  #v5.3.0

  PHP5.3.0一些特点总结了如下:

  命名空间

  关于命名空间,在PHP-DEV上进行了多次的讨论,最终就如何工作达成了共识。它的最大好处就是缩短了类名的长度。为了确保您的类库可以插入到其他代码中,它一直建议在前缀中添加您的类名,例如:“Zend_DB_Connection”,但这可能会导致名字过长。所以命名空间改变了这种方式。完整的类名为“Zend::DB:Connection”,您只需要用'Connection' 就能引用到Connection类。

  例如:

  Java代码

  1. <?php

  2.

  3. // The class file

  4. namespace Zend::DB;

  5.

  6. class Connection {

  7.

  8. function foo() {

  9.

  10. echo 'bar';

  11.

  12. }

  13.

  14. }

  15. ?>

  <?php // The class file namespace Zend::DB; class Connection { function foo() { echo 'bar'; } } ?> [/pre]

  Java代码

  1. <?php

  2.

  3. require 'Zend/DB/Connection.php';

  4.

  5. use Zend::DB::Connection;

  6.

  7. $connection = new Connection();

  8. $connection->foo();

  9.

  10. ?>

  <?php require 'Zend/DB/Connection.php'; use Zend::DB::Connection; $connection = new Connection(); $connection->foo(); ?>[/pre]

  使用命名空间同样可以给类取别名

  Java代码

  1. <?php

  2.

  3. use Zend::DB::Connection as MyConnection;

  4.

  5. $connection = new MyConnection();

  6.

  7. ?>

  <?php use Zend::DB::Connection as MyConnection; $connection = new MyConnection(); ?>[/pre]

  此外,常量和函数也可以使用命名空间,但是他们不能够直接的被导入。这就意味着,如果您在'Connection'中创建了一个函数 'myFunction',您不能导入 Zend::DB:myFunction ,但是您可以先导入Zend::DB,然后使用DB:myFunction() 来调用此函数。

  查看详情:

  Late static bindings

  从用户的角度上看没有一个真正的描述性名称,但这个功能在类的继承上添加了一些更具弹性的功能。

  例如: Limitations of self::

  Java代码

  1. <?php

  2. class A {

  3. public static function who() {

  4. echo __CLASS__;

  5. }

  6. public static function test() {

  7. self::who();

  8. }

  9. }

  10.

  11. class B extends A {

  12. public static function who() {

  13. echo __CLASS__;

  14. }

  15. }

  16.

  17. B::test();

  18. ?>

  <?phpclass 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();?>[/pre]

  运行结果:A

  查看详情:

  __callStatic

  使用函数__call,对未定义的方法以不同的方式截获并进行处理。PHP 5.3添加__callstatic,为静态方法也增加了相同的功能。