0

0

php5.3介绍

php中文网

php中文网

发布时间:2016-06-08 17:32:32

|

1705人浏览过

|

来源于php中文网

原创



PHP 5.3 介绍
PHP 
2008 魁北克- Ilia Alshanetsky


 
. 新版本的特性

* 兼职老版本下的代码
* 重点主要放在现有的功能的改进
* 更少的bug
* 更快的发布周期


1. 命名空间(Namespaces)

* PHP5.3最大的新功能
* 完全支持名字空间特征
* 大部分的功能的执行在编译时
* 简化命名惯例

1) 更清晰的代码

    不使用 Namespaces
    
function MY_wrapper() {}
    
class MY_DB {}
    
define(''MY_COMM_STR'', '''');

   
    MY_wrapper();
    
new MY_DB();
    MY_COMM_STR;

2) 使用 Namespaces
   
    namespace MY;
   
    
function wrapper() {}
   
    
class DB { }
   
    
const CONN_STR = '''';
           
   
    
use MY AS MY;
   
    wrapper();
   
    
new DB();
   
    CONN_STR;
   


3) 一个文件中多个名字空间
   
    namespace LIB;
   
    
class MYSQL {}
    
class SQLite {}
   
    
$b = new SQLite(;
   
    namespace LIB_EXTRA;
   
    
class MScrypt {}
   
    
$a new MScrypt();
   
    
var_dump(
        
get_class($a),
        
get_class($b)
    };
   
    
// result:
    // string(18) "LIB_EXTRA::MScrypt"
    // string(11) "LIB::SQLite"






4) 名字空间的层级

    namespace foo;
   
    
function strlen($foo) { return htmlspecialchars($foo); }
   
    
echo strlen("test"); // test
    echo ::strlen("test"// 4
    echo namespace::strlen("test"); // test
   
    
* function, class 和 constant 引用在一个名字空间中首先指向这个名字空间, 其次才是一个全局的范围


5) 名字空间 & 自动引入


    
function __autoload($var) { var_dump($var); } // LIB::foo
    require "./ns.php";
    
/**
         namespace LIB;
     new foo();
    ?>
    
*/

* __autoload() 将处理为和名字空间的类名一起。
* autoload 仅在 class 不在名字空间和全局范围内存在时触发。
* __autoload() 声明在一个名字空间中将不别调用!




6) 其他的名字空间的语法技巧

    namespace really
::long::pointlessly::verbose::ns;
   
    __NAMESPACE__; 
// 当前的名字空间名称
   
    
class a {}
   
    
get_classnew a() ); // really::long::pointlessly::verbose::ns::abs
   
    
use really::long::pointlessly::verbose::ns::AS b; // 从一个名字空间引用class

   


2. 改进的性能
* md5() 速度提高了大概10-15%
* 引擎中更好的堆栈实现
* 常量移到只读内存区
* 改进Exception处理(更简单 & 更少的代码)
* 调用 (require/include)_once 去掉了使用open(2)(linux下的c函数)
* 使用gcc4编译的二进制更小更快

整体性能提高 
5-15%



3. 新的语言特性


1) __DIR__

* 引入 __DIR__ magic常量 定位脚本的目录

    
echo dirname(__FILE__); // 
   
    
/* vs */
   
    
echo __DIR__; // >= 5.3


2?:  操作符
* 允许从2个值的or/and表达式快速的获取一个非空的值
   
    
$a = true ?: false// true;
    $a = false ?: true// true;
    $a = "" ?: 1// 1
    $a = 0 ?: 2// 2
    $a = array() ?: array(1); // array(1);
    $a = strlen(""?: strlen("a"); // 1
   



3) __callStatic()
   
    
* 等价于 __call() , 但它是为调用静态方法准备的
   
    
class helper
    {
        
static function __callStatic($name, $args){
            
echo $name.''(''.implode('','' $args).'')'';
        }       
    }
   
    helper
::test("foo", "bar"); // test(foo,bar);


// 动态的函数/方法调用有点慢...

 
 
4) 动态的调用静态方法
 
* php 现在允许 动态的调用静态的方法
   
    
class helper
    {
        
static function foo(){
            
echo __METHOD__;`
        }   
    }
   
    
$a = "helper";
    
$b = "foo";
   
    
$a::$b(); // helper::foo

// 动态的函数/方法调用有点慢...


5) 延迟静态绑定

* 静态处理从编译时延迟到执行时
   
    
class A
    {
        
public static function whoami(){
            
echo __CLASS__;   
        }
       
        
public static function identity(){
            self
::whoami();   
        }
    }
   
    
class B extends A
    {
        
public static function whoami(){
            
echo __CLASS__;
        }
    }
   
    B
::identity(); // A 
   
   
    
class A
    {
        
public static function whoami(){
            
echo __CLASS__;   
        }
       
        
public static function identity(){
            
static::whoami();   
        }
    }
   
    
class B extends A
    {
        
public static function whoami(){
            
echo __CLASS__;
        }
    }
   
    B
::identity(); // B = 5.3
   

* 小心使用操作码缓存,没有向后兼容



6) MySQLInd

* 特殊的,高速的专门为PHP设计的MySQL调用库接口




* 更好的性能
* 内存的使用优化
* 内置的驱动(不是适应性的再次扩展)
* Many future options due to tight integration with PHP
* 目前还没有PDO_MySQL 支持 mysql(i) only for now





7) INI Magic

* CGI/FastCGI 支持".htaccess" 形式的INI控制
* 用户可以自己设定每个目录的INI在php.ini中通过[PATH=/var/www/domain.com]设定
* 优化错误处理
* 允许用户使用INI变量和常量任何定义的INI文件中
* 其他几个小的优化


    用户自定义的php
.ini(.htaccess) 文件名. 默认为".user.ini"
    user_ini
.filename = ".user.ini"


禁止这个特性 设置这个选项为空值


    用户自定义php
.ini 的缓存失效期(time-to-live) 秒数. 默认is 300s (5分钟)
    user_ini
.cache_ttl = 300s
   
    [PATH
=/var/www/domain.com]
    variables_order 
= GPC
    safe_mode 
= 1

    [my varibles]
    somevar 
= "1234"
    anothervar 
= ${somevar}    ; anothervar == somevar

    [ini arrays]
    foo[bar] 
= 1
    foo[
123= 2
    foo[] 
= 3



8) 扩展的 OpenSSL 函数

* 使用 OpenSSL Digest 函数

    
foreach (openssl_get_md_methods() as $d) {// MD4, MD5, SHA512... (12 all in all)
        echo $d. " - ". openssl_digest("foo", "md5"); // acbd18db4cc2f85cedef654fccc4a4d8
    }

* 使用 OpenSSL 加密函数

    
// BF-CBC, AES-256 CFB1... (54 all in all)
    foreach(openssl_get_cipher_methods() as $v) {
        
$val = openssl_encrypt("value", $v, "secret");
        openssl_decrypt(
$val, $v, "secret"); // value
    }


* 扩展的 openssl_pkey_new() 和 openssl_pkey_get_details()
函数 允许访问 内部的 DSA
, RSA 和 DH 密匙.


其目标在PHP中实现一个简单的OpenId


 
9) SPL(Standard PHP Library) 优化

* 优化嵌套的目录迭代次数由文件系统迭代

* 引入 GlobIterator

* 各种各样的数据结构类: 双链表, 堆栈, 队列, 堆, 小型堆, 大型堆, 优先级队列
 

* 其他的很绕口的一些特征


10) 时间处理进行扩展了和添加

* 可控制的 strtotime() 由 date_create_from_format()实现
   
    
$date = strtotime("08-01-07 00:00:00");
    
var_dump(date("Y-m-d", $date)); // string(10) "2008-01-07"
    $date = date_create_from_format("m-d-y", "08-01-07");
    
var_dump($date->format(''Y-m-d'')); // string(10) "2007-08-01"

* 添加了 date_get_last_errors(),并且返回时间语法分析的错误和警告
    
array(4) {
        [
"warning_count"=> int(0)
        [
"warnings"=> array(0) { }
        [
"error_count"=> int(2)
        [
"errors"]=>
            
array(2) {
                [
2]=> string(40"The separation symbol could not be found"
                [
6]=> string(13"Trailing data"
            }
    }


 
11) getopt() 优化

* 影响 Windows 平台

* 本地的执行不依赖于本地getopt()实现.

* 跨平台支持长选项 (--option)
    
// input: --a=foo --b --c
    var_dump(getopt("", array("a:","b::","c")));
    
/* output: array(3) {
        ["a"]=>
        string(3) "foo"
        ["b"]=>
        bool(false)
        ["c"]=>
        bool(false)
    } 
*/


 
12) XSLT Profiling
* 引入 Xslt Profiling 通过 setProfiling()实现

    
$xslt = new xsltprocessor();
    
$xslt->importStylesheet($xml);
    
$xslt->setProfiling("/tmp/profile.txt");
    
$xslt->transformToXml($dom);
   
    Resulting In
:
    
number         match     name     mode     Calls     Tot 100us Avg
        
0         date                         5         58       11
                    Total                     
5         58


 
13) E_DEPRECATED 标记
* 怎么样将一个php发行为一个没有错误的模式? 废弃

* E_DEPRECATED用来指定废弃的功能,或许未来的版本中会消除。


 
14) 垃圾回收器
* 为复杂和长时间运行脚本的执行结束周期释放内存的清理
 
        gc_enable(); 
// 允许垃圾回收
        var_dump(gc_enabled()); // true
        var_dump(gc_collect_cycles()); // 某个元素的清理
        gc_disable(); // 禁止垃圾回收
       
 
15) NOWDOC
* 一个 HEREDOC 不再进行转译

        HEREDOC
    
$foo = ONE
    this is 
$fubar
    ONE;
    
/* string(10) "this is" */
   
        NOWDOC
&
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

28

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

8

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

31

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

3

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

5

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

35

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

12

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

40

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

7

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 13.5万人学习

Pandas 教程
Pandas 教程

共15课时 | 1.0万人学习

C# 教程
C# 教程

共94课时 | 7.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号