PHP7.2新特性

1. 增加新的类型object

function test(object $obj) : object
{
    return new SplQueue();
}

test(new StdClass());

2. 通过名称加载扩展

扩展文件不再需要通过文件加载 (Unix下以.so为文件扩展名,在Windows下以 .dll 为文件扩展名) 进行指定。可以在php.ini配置文件进行启用

; ini file
extension=php-ast
zend_extension=opcache

3.允许重写抽象方法

当一个抽象类继承于另外一个抽象类的时候,继承后的抽象类可以重写被继承的抽象类的抽象方法。

<?php

abstract class A
{
    abstract function test(string $s);
}
abstract class B extends A
{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;
}

4. 使用Argon2算法生成密码散列

Argon2 已经被加入到密码散列(password hashing) API (这些函数以 password_ 开头), 以下是暴露出来的常量

5. 新增 PDO 字符串扩展类型

当你准备支持多语言字符集,PDO的字符串类型已经扩展支持国际化的字符集。以下是扩展的常量:

  • PDO::PARAM_STR_NATL
  • PDO::PARAM_STR_CHAR
  • PDO::ATTR_DEFAULT_STR_PARAM
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);

6. 命名分组命名空间支持尾部逗号

use Foo\Bar\{
    Foo,
    Bar,
    Baz,
};

PHP7.2 变更

1. number_format 返回值

var_dump(number_format(-0.01)); // now outputs string(1) "0" instead of string(2) "-0"

2. get_class()不再允许null。

var_dump(get_class(null))// warning

4. count 作用在不是 Countable Types 将发生warning

count(1), // integers are not countable

5. 不带引号的字符串

在之前不带引号的字符串是不存在的全局常量,转化成他们自身的字符串。现在将会产生waring。

var_dump(HEELLO);

6. __autoload 被废弃

__autoload方法已被废弃

7. each 被废弃

使用此函数遍历时,比普通的 foreach 更慢, 并且给新语法的变化带来实现问题。因此它被废弃了。

8. is_object、gettype修正

is_object 作用在**__PHP_Incomplete_Class** 将反正 true

gettype作用在闭包在将正确返回resource

9. Convert Numeric Keys in Object/Array Casts

把数组转对象的时候,可以访问到整型键的值。

// array to object
$arr = [0 => 1];
$obj = (object)$arr;
var_dump(
    $obj,
    $obj->{'0'}, // now accessible
    $obj->{0} // now accessible
);

内容来自网络,PHPer技术栈收集,如有侵权,请告知。

本文分享自微信公众号 - PHPer技术栈(Bule_sky-W)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端开发规范

    省略外链资源(图片及其它媒体资源)URL 中的 http / https 协议,使 URL 成为相对地址

    公众号php_pachong
  • 后渗透之维护权限

    ‍何为‍‍“后渗透”?就是获取到受害者服务器的权限后,再继续对受害者服务器进行长期攻击或者信息获取的一种持续性手段。常见的手段有,后门、影子账户、会话‍劫‍持等...

    洛米唯熊
  • 利用thinkphp实现分页

    通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持。分页类目录:/Thinkphp/Library/Org/Bjy/P...

    公众号php_pachong
  • 如何实现异步执行

    浏览器和服务器之间只一种面向无连接的HTTP协议进行通讯的,面向无连接的程序的特点是客户端请求服务端,服务端根据请求输出相应的程序,不能保持持久连接。

    公众号php_pachong
  • Web 开发会用到的20款优秀的开源工具

    很多的开源应用程序和工具都有很强的替代性。相对于其他昂贵的工具来说,开源工具兼容性比较好,并且他们是免费的。这样开发人员在进行日常的工作时便可以不花钱就可以获得...

    用户4962466
  • Service Mesh在有赞的实践与发展

    Service Mesh 的概念自 2017 年初提出之后,受到了业界的广泛关注,作为微服务的下一代发展架构在社区迅速发酵,并且孵化出了诸如 Istio 等广受...

    用户1278550
  • 实例化模型

    完成业务逻辑处理,包括对数据表的增删改查(CUED)操作。对处理的数据进行封装;对字段及属性进行验证;完成对象及属性的过滤等功能。Thinkphp模型类的命名规...

    公众号php_pachong
  • 我是怎么保存公众号历史文章合集到本地的?当然是用python了!

    偶然间,关注了一个自己特别感兴趣的公众号,感觉就像是挖到了一个宝藏。于是,我们就想翻一翻宝藏里都有什么。

    小小詹同学
  • Thinkphp的Common模块作用

    Common模块和普通模块一样,可以添加控制器、模型和视图,并且支持多层,但不能直接访问,只能继承,其中模型层 可以作为公用模型,在D方法实例化中调用。D...

    公众号php_pachong
  • Thinkphp入口文件和路由

    index.php => define('BIND_MODULE', 'index');

    公众号php_pachong

扫码关注云+社区

领取腾讯云代金券