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 23 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
显示程序执行时间php函数代码
Aug 29 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
Thinkphp中的volist标签用法简介
Jun 18 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
thinkphp学习笔记之多表查询
Jul 28 PHP
CodeIgniter生成静态页的方法
May 17 PHP
微信公众号之主动给用户发送消息功能
Jun 22 PHP
PHP扩展类型及安装方式解析
Apr 27 PHP
PHP与Web页面的交互示例详解一
Aug 04 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学习之数组的定义和填充
2011/04/17 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
javascript 简练的几个函数
2009/08/29 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
ECMAScript6函数默认参数
2015/06/12 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
python pandas中DataFrame类型数据操作函数的方法
2018/04/08 Python
pandas分组聚合详解
2020/04/10 Python
如何利用python 读取配置文件
2021/01/06 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
团日活动总结
2014/04/28 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
如何解决php-fpm启动不了问题
2021/11/17 PHP