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 相关文章推荐
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
Mar 23 PHP
php 结果集的分页实现代码
Mar 10 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
php中选择什么接口(mysql、mysqli)访问mysql
Feb 06 PHP
php以post形式发送xml的方法
Nov 04 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
PHP实现多文件上传的方法
Jul 08 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
laravel自定义分页效果
Jul 23 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 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
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
Python饼状图的绘制实例
2019/01/15 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
Keras搭建自编码器操作
2020/07/03 Python
Python与C/C++的相互调用案例
2021/03/04 Python
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
Linux常见面试题
2013/03/18 面试题
安全责任协议书
2014/04/21 职场文书
说明书怎么写
2014/05/06 职场文书
保护黄河倡议书
2014/05/16 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
博士生专家推荐信
2014/09/26 职场文书
消防验收申请报告
2015/05/15 职场文书
让生命充满爱观后感
2015/06/08 职场文书
2015年暑假生活总结
2015/07/13 职场文书
python执行js代码的方法
2021/05/13 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技