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的面向对象编程
Oct 09 PHP
php学习之运算符相关概念
Jun 09 PHP
关于crontab的使用详解
Jun 24 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
Laravel5中contracts详解
Mar 02 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
详解php中反射的应用
Mar 15 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
Apr 22 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 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彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
使用Python实现简单的服务器功能
2017/08/25 Python
tensorflow更改变量的值实例
2018/07/30 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
python使用配置文件过程详解
2019/12/28 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
python的flask框架难学吗
2020/07/31 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
ORACLE十问
2015/04/20 面试题
监督检查工作方案
2014/05/28 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
法定代表人证明书
2014/11/28 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS