如何修改php7 list()、session及其他模块

一、list()不再按照相反的顺序赋值

list($array[], $array[], $array[]) = [1, 2, 3]; 
var_dump($array);

上面的代码会返回一个数组:$array == [1, 2, 3] 而不是之前的 [3, 2, 1]

注意:只是赋值的顺序发生变化,赋的值还是和原来一样的。

list($a, $b, $c) = [1, 2, 3]; // $a = 1; $b = 2; $c = 3;

和原来的行为还是一样的。

二、空的list()赋值不再允许。

list() = $a;
list(,,) = $a;
list($x, list(), $y) = $a;

上面的这些代码运行起来会报错了。

三、list()不在支持字符串拆分功能   

$string = "xy";
list($x, $y) = $string;

这段代码最终的结果是:$x == null and $y == null (不会有提示)

PHP5运行的结果是:

$x == "x" and $y == "y".

四、除此之外,list()现在也适用于数组对象:

list($a, $b) = (object) new ArrayObject([0, 1]);

PHP7结果:

$a == 0 and $b == 1.

PHP5结果:

$a == null and $b == null.

PHP7其他修改

CURL模块:禁止禁用CURLOPT_SAFE_UPLOAD选项,通过curl上传文件必须使用curl_file/CURLFILE接口。

DATE模块:mktime()和gmmktime()函数移除了$is_dst parameter参数。

DBA模块:dba_delete() 如果在inifile里面没有找到key的时候会返回false。

GMP模块:必须用libgmp 4.2版本以上。gmp_setbit() and gmp_clrbit()如果传入的index为负数的话,会返回false。

Intl模块:移除了别名函数datefmt_set_timezone_id() 和IntlDateFormatter::setTimeZoneID(),用datefmt_set_timezone() 和IntlDateFormatter::setTimeZone()

libxml模块:新增ibxml 2.9.0引入的LIBXML_BIGLINES 选项,并在错误报告中增加了行号> 16-bit的支持。

Mcrypt模块:.移除了mcrypt_generic_end() mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() 和mcrypt_ofb()

Opcache:移除了opcache.load_comments配置项,现在注释加载总是被激活的。

OpenSSL:移除了"rsa_key_size"、"CN_match" 、"SNI_server_name" 选项。

PCRE:移除了 /e (PREG_REPLACE_EVAL) 修饰符的支持,使用preg_replace_callback()来代替。

PDO_pgsql:删除了PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT选项。

Standard:删除了setlocale()函数里面对字符串类型的支持,使用LC_*常量。删除了set_magic_quotes_runtime() magic_quotes_runtime().

JSON:json_decode()会拒绝与RFC 7159不兼容的数字格式。json_decode第一个参数是空值的时候会返回json语法错误。

Stream:删除别名函数set_socket_blocking()

XSL:删除xsl.security_prefs 选项。

session

session_start()可以接受所有的INI设置,可以用数组的方式传入,比如:['cache_limiter'=>'private']

save handler接受validate_sid(), update_timestamp() ,可用来检查sid是否存在,更新session数据的时间戳。

增加了SessionUpdateTimestampHandlerInterface,这个接口里面定义了validateSid(), updateTimestamp()方法。

session.lazy_write(default=On) 配置项可以允许只有session数据有变化时才写数据。

PHP 7 Session 选项

PHP 7 session_start()函数可以接收一个数组作为参数,可以覆盖php.ini中session的配置项。

这个特性也引入了一个新的php.ini设置(session.lazy_write),默认情况下设置为 true,意味着session数据只在发生变化时才写入。

除了常规的会话配置指示项, 还可以在此数组中包含 read_and_close 选项。如果将此选项的值设置为 TRUE, 那么会话文件会在读取完毕之后马上关闭, 因此,可以在会话数据没有变动的时候,避免不必要的文件锁。

实例

把cache_limiter设置为私有的,同时在阅读完session后立即关闭。

<?php 
session_start([ 
'cache_limiter' => 'private', 
'read_and_close' => true, ]); 
?>

原创文章,作者:VKITE,如若转载,请注明出处:http://www.wangzhanshi.com/n/9401.html

(0)
VKITE的头像VKITE
上一篇 2025年1月1日 16:46:35
下一篇 2025年1月1日 16:46:37

相关推荐

  • 升级PHP7操作MongoDB的方法介绍

    这篇文章主要为大家详细介绍了升级PHP7操作MongoDB的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 前言 使用 PHP+MongoDB…

    php 2025年1月1日
  • php7 图形用户界面GUI 开发

    一、下载指定系统扩展 http://pecl.php.net/package/ui http://pecl.php.net/package/ui/2.0.0/windows 由于我…

    2025年1月1日
  • php7和PHP5对比新特性和性能优化有哪些区别

    1、抽象语法树( AST)   1)在 PHP5中,从 php 脚本到 opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 token 流; P…

    2025年1月1日
  • PHP7的性能测试工具介绍

    1、Blackfire Blackfire Profiler Fire up your PHP App Performance翻译过来就是清晰的展示你的应用性能。这个工具很强大,真…

    php 2025年1月1日
  • php7新特性新增的操作符是什么

    php7新特性新增两个操作符是<=>和??。 在 PHP7 中,引入了一个新的功能,即空合并运算符(??)。由于在 PHP7 项目中存在大量同时使用三元表达式和 iss…

    php 2025年1月1日
  • 如何在php7中使用xhprof测试php性能?

    介绍 1 背景 PHP的xhprof扩展Facebook不再进行更新和维护,因为Faceboo已经全面使用HHVM,不再使用PHP zend引擎。 xhprof不支持新版本的PHP…

    2025年1月1日
  • 出php7的时间

    2015年6月11日,PHP开发团队宣布将立即提供PHP7.0.0 Alpha1。此版本标志着PHP 7主要系列的开始。鼓励所有PHP用户仔细测试该版本,并报告错误跟踪系统中的所有…

    php 2025年1月1日
  • 如何解决PHP无法实现多线程的问题

    其实的是大多数情况下,你大可不必使用fork或者线程,并且你会得到比用fork或thread更好的性能。假设你要建立一个服务来检查正在运行的n台服务器,以确定他们还在正常运转。你可…

    php 2025年1月2日
  • PHP7带来了哪些好处

    本文是一篇讲座听后+后续研究的总结。 话说当年追时髦,php7一出就给电脑立马装上了,php5和php7共存,也是立马写了个超级耗时间的循环脚本测了一番,确实php7给力很多,然后…

    2025年1月1日
  • 用vscode运行php的图文详解

    使用vscode运行php 一、安装扩展 我们先打开vscode 然后转到安装扩展的地方 这里我们需要两个扩展,一个是php server,一个是php debug 单击安装即可 …

    2024年12月17日

发表回复

登录后才能评论