php7 list()、session及其他模块的修改实例分析


Posted in PHP onMay 25, 2020

本文实例讲述了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, ]); 
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
PHP 编程安全性小结
Jan 08 PHP
php合并js请求的例子
Nov 01 PHP
sae使用smarty模板的方法
Dec 17 PHP
php求一个网段开始与结束IP地址的方法
Jul 09 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
Smarty高级应用之缓存操作技巧分析
May 14 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
php格式文件打开的四种方法
Feb 24 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
简单实用的PHP文本缓存类实例
Mar 22 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
php7 新增功能实例总结
May 25 #PHP
PHP强制转化的形式整理
May 22 #PHP
Yii 框架入口脚本示例分析
May 19 #PHP
Yii 框架使用数据库(databases)的方法示例
May 19 #PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 #PHP
PHP项目多语言配置平台实现过程解析
May 18 #PHP
Yii 框架使用Forms操作详解
May 18 #PHP
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php生成shtml类用法实例
2014/12/09 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
Python3读取文件常用方法实例分析
2015/05/22 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
python中对_init_的理解及实例解析
2019/10/11 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
pycharm导入源码的具体步骤
2020/08/04 Python
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
《可爱的动物》教学反思
2014/02/22 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
员工开除通知书
2015/04/25 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
用CSS3画一个爱心
2021/04/27 HTML / CSS
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python