阅读更多

10顶
2踩

编程语言

原创新闻 PHP 5.3的新特点

2008-08-07 17:15 by 资深编辑 ╱/罒呍唲 评论(8) 有8330人浏览

[url= http://www.php.net/archive/2008.php#id2008-08-01-1]PHP 5.3 alpha1[/url] 在不久前公布,在这里列举一些新的特点。

命名空间

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

// The class file 
namespace Zend::DB; 

class Connection { 

   function foo() { 
  
      echo 'bar'; 

   } 

}   
?> 

<?php 

require 'Zend/DB/Connection.php'; 

use Zend::DB::Connection; 

$connection = new Connection(); 
$connection->foo(); 

?>


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

<?php 

use Zend::DB::Connection as MyConnection; 

$connection = new MyConnection(); 

?>


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

查看详情:http://ca3.php.net/language.namespaces

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

<?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

查看详情:[url] http://ca.php.net/oop5.late-static-bindings[/url]

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

<?php 

class MyClass { 

  static function __callStatic($name, $arguments) { 

    echo "Hi! You just called the method '$name', but it doesn't exist. Perhaps you mistyped"; 

  } 

} 

MyClass::unknownMethod('hii!'); 

?>


查看详情:http://cn.php.net/language.oop5.overloading

Closures
它可以让您创建in-line 函数。许多语言已经开始有此功能了,也许您在不知道的情况下也使用过它。
例如:
<?php 

$myFunction = function() { 

  echo "Hello world!"; 

} 

$myFunction(); 

?>

变量类型的Closure是一个Closure类的对象,因此它也可用于类型提示和验证。

<?php 

  function setSomeEvent(Closure $myClosure) { 

  } 

?>


PHP Closures也使用‘use’关键字从命名空间引入变量。

<?php 

  $prefix = 'hello'; 

  $myClosure = function($name) use ($prefix) { 

     echo $prefix, ' ', $name; 

  } 

  $myClosure('your mom'); // Guess the output doesn't actually makes sense, but you get the idea 

?>


查看详情:http://wiki.php.net/rfc/closures

__invoke
PHP 5.3还添加了另一个方法,如果对象是Closures类,您可以对它进行修改。
<?php 

class MyCustomClosure { 

   function __invoke() { 

      echo "I'm not really a closure, but you can treat me as such\n"; 

   } 

} 

$closure = new MyCustomClosure(); 
$closure(); 

?>


Phar

phar是PHP专为Java的jar文件推出的功能。每个Phar文件都是一个压缩的存档,可以包含一个完整的PHP应用程序。因此它允许像PHPMYAdmin一样作为单独的文件被分布和使用。
<?php 

  file_get_contents('phar:/full/path/to/pharfile.phar/mydata'); 
  require 'phar:/full/path/to/pharfile.phar/myscript.php'; 

?>


更多扩展
intl ,一个国际化库(默认情况下不启用)。
[url= http://ca3.php.net/book.fileinfo]fileinfo[/url],已推出一阵子,默认启用。
sqlite3 ,默认启用
MySQLND ,在PHP中替代了MySQL的驱动程序,‘ND’代表‘本地驱动程序(Native Driver)’,这意味着它紧紧的围绕着PHP引擎,并增加了一些性能。

其他语言的改善


<?php  

$myVar = $value1?$value1:$value2; 

?>

简写为:
?php 

$myVar = $value1?:$value2; 

?>


其他重要的补充

1.date_add() , date_sub() ,[url=http://cn.php.net/manual-lookup.php?pattern=date_diff&lang=en ] date_diff()[/url] 和OOP equivalents。
2.垃圾回收
3.新的SPL类,如SplStackSqlQueue

您将会看到PHP更加灵活,尤其是对语言的改善,例如closures和命名空间,这将使PHP更为流行。

























10
2
评论 共 8 条 请登录后发表评论
8 楼 achun 2008-08-12 09:03
个人认为php这样的发展路线真的是走错路了.
我认为php的优势在于两点:
1.学习,部署(脚本语言)成本低
2.丰富的库
php如果在此基础上向
1.嵌入式
2.桌面应用
3.改进脚本,重新设计类库,
4.以php分支的方式提供不同的选择
做出努力,效果会更好.
鉴于php目前的发展策略,偶真的不看好他了,要知道新的思想在不断产生呀.
7 楼 koda 2008-08-08 17:19
引用
php java化,不如降低点身价,直接投入java怀抱好了。

PHP是脚本语言,这是本质区别,在Web开发领域,脚本语言自然有它的优势,身价不比Java低
6 楼 slaser 2008-08-08 16:35
php java化,不如降低点身价,直接投入java怀抱好了。
5 楼 rbh 2008-08-08 15:35
官方对PHP和MySQL版本生命周期的说明:
* PHP 3.0 End of Life - past
* PHP 4.0 End of Life - 2008/08/08

* MySQL 3.23 Extended Support Ends - past
* MySQL 4.0 Extended Support Ends - 2008-12-31
* MySQL 4.1 Active Support Ends - past
* MySQL 4.1 Extended Support Ends - 2009-12-31
4 楼 linginfanta 2008-08-08 14:38
不伦不类                                     
3 楼 tag13346 2008-08-08 09:13
越来越象java了
2 楼 fnet 2008-08-08 01:12
命名空间是个好东西..........
1 楼 helyho 2008-08-08 01:01
PHP貌似越来越强大了...
简单的部署,容易的入门.
至少这2点强过JAVA

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • youdiancms V7.4.4_php5.3

    系统采用PHP开发,具有操作简单、功能强大、稳定性好、易扩展、安全性强、维护方便等特点,可帮您快速构建一个强大专业的企业网站。系统支持多语言、自定义模型、SEO优化、静态页、评论留言、购物车、在线支付、订单...

  • 史蒂夫·鲍尔默在Microsoft .NET开发商大会上的演讲

    今天我非常荣幸也非常高兴有机会来给大家介绍一下我们的.NET的战略。在我开始之前,我想感谢英特尔的James Jarret 先生和Gary Glasco先生,感谢他们给我们做的介绍。 没有什么比今天我们身处的这个信息技术时代更令人兴奋。我是在二十年前加盟微软公司的,当时IBM的个人电脑尚未问世。每年的年初我都会断言,变革、创新和令人兴奋的事情可能会放慢节奏,但每年我的预言都是错误的。由于摩尔定律所

  • 《史蒂夫.鲍尔默传》读书笔记

    Steve.Ballmer : 使BIll.Gates圆梦的人;一声咳嗽令华尔街下雨的人;具有8个大脑7个分身术的人.他的人格特征和经营理念为:第一.掌握自己的命运,否则将受人掌握.                                     第二.面对现实,不要生活在过去或幻想之中.                                     第三.坦诚待人.     

  • php5.3使用手册,PHP5.3开发

    当前大部分用PHP语言写的网站都是基于PHP... PHP 5.3从一方面来讲,可以说在2007年计划PHP 6的中的一个PRE版本,增加了当前大部分用PHP语言写的网站都是基于PHP 5.2的,很多服务器配置的环境所谓支持的PHP 5也是PHP ...

  • php5.1特性,PHP 5.3新版特性浅析(1)_PHP教程

    php5.3是php5的一个里程碑,加入了大量新特性。我个人总感觉php功能是越来越多了,但是php的语法却越来越丑陋了,有时加入了新功能,而新功能带来了问题,为了修复问题,又要加入新的语法来修复,郁闷。估计php用...

  • php5.3 连接 mssql,php 5.3+ 连接mssql

    php5.3+里已经没有mssql的dll扩展了,需要使用SQL Server Driver for PHP这里有两个版本有两个版本支持不同的php版本。1.SQL Server Driver for PHP2.0版本适用于PHP 5.2.x版本2.SQL Server Driver for PHP3.0版本...

  • linux php 5.3 变慢,异常在 PHP 5.3 中的最佳实践

    每一个新的功能添加到PHP运行时会创建一个指数随机数,通过这样的方式开发者可以使用和甚至滥用这个...但在本文中,我们将讨论在PHP 5.3中基于异常处理的两个新的特点。第一个是嵌套异常第二是一套SPL(现在的PHP运行...

  • PHP5.3, PHP5.4, PHP5.5新特性

    因为用到PHP新版本,一些新特性必须要了解,且有些可以在...PHP 5.3中的新特性 一.PHP 5.3中的新特性 1. 支持命名空间 (Namespace) 2. 支持延迟静态绑定(Late Static Binding) 3. 支持goto语句 4. 支持闭

  • php5.3环境一键安装,Windows Server 2012一键安装PHP环境(PHP5.3+FastCGI模式)_护卫神...

    护卫神PHP套件包的特点:1、包内各部件均来自官方稳定版本,加上护卫神构建的安全体系,MySQL数据库和PhpMyadmin站点已经自动配置安全,一键安装,放心使用;2、PHP版本为5.3.28,是32位的PHP核心,可以支持32位或64...

  • php 5.3.5 安装_PHP 5.3 安装分析心得

    PHP 5.3 安装分析心得满腔热血怎么能被安装毁了呢?以下是百分网小编精心为大家整理的PHP 5.3.0 安装分析心得,希望对大家安装PHP有所帮助!更多内容请关注应届毕业生网!话说,一直犯懒没下载一个PHP 5.3,今天看到...

  • PHPvod视频点播系统 2.5 for php5.3.x gbk.rar

    PHPvod视频点播系统 2.5 for php5.3.x gbk 系统改进列表:2013-09-18 1、优化视频上传模块 2、新增{php}模板标签,支持在模板中写原生的php语句 3、更新kindeditor,默认允许上传图片,支持自定义功能按钮 4、...

  • PHP 5.3 5.4 5.5 新特性

    因为用到PHP新版本,一些新特性必须要了解,且有些可以在...PHP 5.3中的新特性 一.PHP 5.3中的新特性 1. 支持命名空间 (Namespace) 2. 支持延迟静态绑定(Late Static Binding) 3. 支持goto语句 4. 支持闭

  • PHPvod视频点播系统 2.6 for php5.3.x utf-8.rar

    PHPvod视频点播系统 2.6 for php5.3.x utf-8 系统改进列表:2014-01-27 1、修正所有已知的BUG及系统高危漏洞. 2、优化监听器模块 3、新增文档模块及文档调用标签 4、优化RSS模块 5、新增播放地址预处理接口(pv...

  • PHP 5.3新版特性浅析

    php5.3是php5的一个里程碑,加入了大量新特性。 我个人总感觉php功能是越来越多了,但是php的语法却越来越丑陋了,有时加入了新功能,而新功能带来了问题,为了修复问题,又要加入新的语法来修复,郁闷。估计php用...

  • DebianLNMP一键安装包Debian6系统下的Nginx PHP5.3 MySQL最快最新

    在Debian6系统下安装LNMP(Debian6 + Nginx1.2.x + PHP5.3.x + MySQL5.5.x 最省资源一键安装包)只需要上面两条命令。 DebianLNMP是一个用Linux Shell编写的可以为Debian/Ubuntu VPS(VDS)或独立主机安装LNMP(Nginx、...

  • [转]PHP5.3新功能与不兼容特性整理

     PHP5.3之后的版本引入了名称空间的支持,此举的好处是不同模块之间分隔方式变得天然纯正,以往PHP要实现不同模块之间的划分通常会各为其政,有 类PEAR或ZendFramework的, 有像Drupal以模块区分等等,在已有...

  • PHP 5.3新版特性

    转载自 http://developer.51cto.com/art/200903/115995.htm ... 一、mysql驱动mysqlnd 一直以来,php都是通过mysql客户端连接mysql,而现在mysql官方已经推出php版的mysql客户端,而这个mysqlnd有效降低...

Global site tag (gtag.js) - Google Analytics