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 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
php中autoload的用法总结
Nov 08 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
PHP实现批量删除(封装)
Apr 28 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP反射实际应用示例
Apr 03 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 PHP
浅谈如何提高PHP代码的质量
May 28 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获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
Prototype Class对象学习
2009/07/19 Javascript
Javascript变量函数浅析
2011/09/02 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
koa源码中promise的解读
2018/11/13 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
[06:42]DOTA2每周TOP10 精彩击杀集锦vol.1
2014/06/25 DOTA
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
python 获取字典键值对的实现
2020/11/12 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
前台接待的工作职责
2013/11/21 职场文书
公司聘任书模板
2014/03/29 职场文书
中班幼儿评语大全
2014/04/30 职场文书
合伙经营协议书范本
2014/09/13 职场文书
房产公证委托书范本
2014/09/20 职场文书
2014年法院工作总结
2014/11/24 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
《社戏》教学反思
2016/02/22 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
《黑岩★★射手 DAWN FALL》BD发售宣传CM公开
2022/04/04 日漫