PHP5.6新特性例子举证

PHP5.6已经发布Alpha版,预示着下一个大版本的升级即将到来,PHP5.6带来了哪些新特性?本文将介绍这些特性,并讨论它们可以给开发者带来哪些好处。

常量标量表达式(Constant scalar expressions)

在常量、属性声明和函数参数默认值声明时,以前版本只允许常量值,PHP5.6开始允许使用包含数字、字符串字面值和常量的标量表达式。

 代码如下 复制代码

<?php
const ONE = 1;
const TWO = ONE * 2;

class C {
    const THREE = TWO + 1;
    const ONE_THIRD = ONE / self::THREE;
    const SENTENCE = 'The value of '.THREE.' is 3';

    public function f($a = ONE + self::THREE) {
        return $a;
    }
}

echo (new C)->f()."\n";
echo C::SENTENCE;

上面代码输出:

4
The value of THREE is 3
可变参数函数(Variadic functions via ...)

可变参数函数的实现, 不再依赖func_get_args()函数,现在可以通过新增的操作符...更简洁地实现。

 代码如下 复制代码

<?php
function f($req, $opt = null, ...$params) {
    // $params is an array containing the remaining arguments.
    printf('$req: %d; $opt: %d; number of params: %d'."\n",
           $req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);
上面代码输出:

$req: 1; $opt: 0; number of params: 0
$req: 1; $opt: 2; number of params: 0
$req: 1; $opt: 2; number of params: 1
$req: 1; $opt: 2; number of params: 2
$req: 1; $opt: 2; number of params: 3

参数解包功能(Argument unpacking via ...)

在调用函数的时候,通过...操作符可以把数组或者可遍历对象解包到参数列表,这和Ruby等语言中的扩张(splat)操作符类似。

 代码如下 复制代码

<?php
function add($a, $b, $c) {
    return $a + $b + $c;
}

$operators = [2, 3];
echo add(1, ...$operators);

上面代码输出:

6
导入函数和常量(use function and use const)

use操作符开始支持函数和常量的导入。use function和use const结构的用法的示例:

 代码如下 复制代码

<?php
namespace Name\Space {
    const FOO = 42;
    function f() { echo __FUNCTION__."\n"; }
}

namespace {
    use const Name\Space\FOO;
    use function Name\Space\f;

    echo FOO."\n";
    f();
}
上面代码输出:

42
Name\Space\f
phpdbg

PHP自带了一个交互式调试器phpdbg,它是一个SAPI模块,更多信息参考phpdbg文档。

php://input可以被复用

php://input开始支持多次打开和读取,这给处理POST数据的模块的内存占用带来了极大的改善。

大文件上传支持

可以上传超过2G的大文件。

GMP支持操作符重载

GMP对象支持操作符重载和转换为标量,改善了代码的可读性,如:

 代码如下 复制代码

<?php
$a = gmp_init(42);
$b = gmp_init(17);
 
// Pre-5.6 code:
var_dump(gmp_add($a, $b));
var_dump(gmp_add($a, 17));
var_dump(gmp_add(42, $b));

// New code:
var_dump($a + $b);
var_dump($a + 17);
var_dump(42 + $b);

新增gost-crypto哈希算法

采用CryptoPro S-box tables实现了gost-crypto哈希算法,详情参考RFC 4357, section 11.2。

SSL/TLS改进

OpenSSL扩展新增证书指纹的提取和验证功能,openssl_x509_fingerprint()用于提取X.509证书的指纹,SSL stream context 选项: capture_peer_cert 用于获取对方X.509证书;peer_fingerprint用于断言对方证书和给定的指纹匹配。

另外,可以通过SSL流上下文选项crypto_method指定加密方法,如SSLv3或TLS,目前支持的选项值包括STREAM_CRYPTO_METHOD_SSLv2_CLIENT, STREAM_CRYPTO_METHOD_SSLv3_CLIENT, STREAM_CRYPTO_METHOD_SSLv23_CLIENT (默认), or STREAM_CRYPTO_METHOD_TLS_CLIENT。

时间: 2024-09-25 15:11:07

PHP5.6新特性例子举证的相关文章

PHP5.0新特性(ZT)

php5 (一) Zend 2.0的诞生现在的PHP4所使用的基本文法是被称之为Zend 引擎的脚本编译引擎.这个就是PHP4的优良机能的原因之一,是作为对PHP3的改进而生成的一种语言.大家一直认为,PHP4的性能根据当初的目标,比PHP3有了很大的提升,在网络编程的世界里占据了很大的份额. 开发了Zend 引擎的Zend公司是在开发PHP4的同时,由PHP3的主要开发者Zeev Suraski和Andi Gutmans所创立的企业合并而来的.Zend的名称是由Zeev和Andi的名字合起来组

PHP5.3新特性小结_php技巧

本文总结分析了PHP5.3新特性.分享给大家供大家参考,具体如下: 1.命名空间 解决了类,函数和常量名冲突的问题 2.静态绑定 继承时父类可以直接调用子类重写父类的方法 class A { public static function who() { echo __CLASS__; } public static function test() { static::who(); // 后期静态绑定从这里开始 } } class B extends A { public static funct

php5.3 PHP5.4 PHP5.5 php5.6 新特性/使用PHP5.5/PHP5.6要注意的

因为用到PHP新版本,一些新特性必须要了解,且有些可以在开发时就使用,如果不使用,那么何必升级PHP版本呢,显得有些得不偿失了! 所以整理了一下 一些特性,有可能不全,待添加 PHP7.0 和PHP7.1.X新特性请看 http://blog.csdn.net/fenglailea/article/details/52717364 1.PHP 5.3中的新特性  1.1 PHP 5.3中的新特性  1.1.1. 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要

浅谈php7的重大新特性_php技巧

截止到目前为止,PHP官方已经发布了php7的RC5版本,预计在11月份左右会发布第一个正式版本!现在来说php7的重大特性肯定已经是定型了,不会再有什么变动了.后续一些版本的迭代主要也就是修修bug,优化之类的.下面就来说话我们一直期待的php7会有那些主要的变化了... 新特性预览 ZEND引擎升级到Zend Engine 3,也就是所谓的PHP NG 增加抽象语法树,使编译更加科学 64位的INT支持 统一的变量语法 原声的TLS - 对扩展开发有意义 一致性foreach循环的改进 新增

我整理的PHP 7.0主要新特性_php实例

截止到目前为止,PHP官方已经发布了php7的RC5版本,预计在11月份左右会发布第一个正式版本!现在来说php7的重大特性肯定已经是定型了,不会再有什么变动了.后续一些版本的迭代主要也就是修修bug,优化之类的.下面就来说话我们一直期待的php7.0新特征吧. 1.标量参数类型声明 现在支持字符串(string).整型(int).浮点数(float).及布尔型(bool)参数声明,以前只支持类名.接口.数组及Callable 两种风格:强制转换模式(默认)与严格模式 <?php // Coer

PHP5.6 CONST新特性几个例子

PHP5.6起CONST新特性定义类常量可以使用常量标量表达式(Constant scalar expressions),例如: <?php   class MyTimer {     const SEC_PER_DAY = 60 * 60 * 24; }   ?> define和CONST的区别是define可以用于定义全局常量,而CONST是定义类的常量. static静态变量与define,CONST的区别是static定义的变量是可以改变的,而后两者不行,并且static静态变量是随类

PHP5的XML新特性

php5|xml 面向的读者 这篇文章的面向对象是所有对PHP5的XML新功能感兴趣的各个水平的PHP开发者.我们假定读者掌握XML的基本知识.然而,如果你已经在你的PHP当中使用了XML,那么这篇文章也会让你受益非浅. 介绍 在当今的互联网世界,XML已经不再是一个时髦词了,它已经被广泛的接受和规范的使用了.因此相对于PHP4,PHP5对于XML的支持更受到了重视.在PHP4中你面对的几乎都是非标准,API中断,内存泄漏以及其它不完全的功能.尽管有些不足已经在PHP4.3中得到改进,开发者们还

PHP5的XML新特性_php基础

面向的读者 这篇文章的面向对象是所有对PHP5的XML新功能感兴趣的各个水平的PHP开发者.我们假定读者掌握XML的基本知识.然而,如果你已经在你的PHP当中使用了XML,那么这篇文章也会让你受益非浅. 介绍 在当今的互联网世界,XML已经不再是一个时髦词了,它已经被广泛的接受和规范的使用了.因此相对于PHP4,PHP5对于XML的支持更受到了重视.在PHP4中你面对的几乎都是非标准,API中断,内存泄漏以及其它不完全的功能.尽管有些不足已经在PHP4.3中得到改进,开发者们还是决定抛弃原有的代

PHP5.3之后的新特性

  从PHP4到PHP5,实现了由个人开发语言到专业互联网的发展,见证着PHP从山寨走上正规大军的发展.PHP6还在酝酿中,相信PHP5会作为PHP6小试牛刀的场地. PHP5.3是PHP5的一个里程碑,加入了大量新特性.PHP功能是越来越多了,但是PHP的语法却越来越丑陋,有时加入了新功能,而新功能又带来了新问题,为了修复问题又要加入新的语法来修复.没有PHP的基础的朋友也不用担心,先对PHP5.3有个基本的了解.等学完后面知识再回过头来看PHP5.3的新特性你会有个全新的理解和感悟. 1.首