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自定义函数返回多个值
Nov 26 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
来自phpguru得Php Cache类源码
Apr 15 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
PHP实现QQ空间自动回复说说的方法
Dec 02 PHP
Joomla开启SEF的方法
May 04 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
php mysql PDO 查询操作的实例详解
Sep 23 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操作XML作为数据库的类
2010/12/19 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
jquery蒙版控件实现代码
2010/12/08 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
tensorflow中next_batch的具体使用
2018/02/02 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
简短证婚人证婚词
2014/01/09 职场文书
星级党支部申报材料
2014/05/31 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
学生会工作感言
2015/08/07 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android