PHP7修改的函数


Posted in PHP onMarch 09, 2021
  • parse_ini_file()和parse_ini_string()的scanner_mode参数增加了INI_SCANNER_TYPED选项。
  • unserialize()增加了第二个参数,可以用来指定接受的类列表。RFC: https://wiki.php.net/rfc/secure_unserialize
  • proc_open()打开的最大限制之前是写死的16,现在这个限制被移除了,最大数量取决于PHP可用的内存。windows版本增加了选项"blocking_pipes",可用来指定是否强制以块的方式读取。
  • array_column():The function now supports an array of objects as well as two-dimensional arrays
  • stream_context_create()windows下面可以接收array("pipe" => array("blocking" => <boolean>))参数。
  • dirname()增加了可选项$levels,可以用来指定目录的层级。dirname(dirname($foo)) => dirname($foo, 2);
  • debug_zval_dump()打印的时候,使用int代替long,使用float代替double。

PHP 过滤 unserialize()

PHP 7 增加了可以为 unserialize() 提供过滤的特性,可以防止非法数据进行代码注入,提供了更安全的反序列化数据。

实例

<?php
class MyClass1 { 
   public $obj1prop;   
}
class MyClass2 {
   public $obj2prop;
}
$obj1 = new MyClass1();
$obj1->obj1prop = 1;
$obj2 = new MyClass2();
$obj2->obj2prop = 2;
$serializedObj1 = serialize($obj1);
$serializedObj2 = serialize($obj2);
// 默认行为是接收所有类
// 第二个参数可以忽略
// 如果 allowed_classes 设置为 false, unserialize 会将所有对象转换为 __PHP_Incomplete_Class 对象
$data = unserialize($serializedObj1 , ["allowed_classes" => true]);
// 转换所有对象到 __PHP_Incomplete_Class 对象,除了 MyClass1 和 MyClass2
$data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]);
print($data->obj1prop);
print(PHP_EOL);
print($data2->obj2prop);
?>

#以上程序执行输出结果为:

#1
#2

 

PHP 相关文章推荐
来自phpguru得Php Cache类源码
Apr 15 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
深入PHP5中的魔术方法详解
Jun 17 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
详解js异步文件加载器
Jan 24 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
php生成二维码图片方法汇总
Dec 17 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 PHP
PHP7 弃用功能
Mar 09 #PHP
PHP7 新增功能
Mar 09 #PHP
PHP7 其他修改
Mar 09 #PHP
PHP7 标准库修改
Mar 09 #PHP
PHP7 其他语言层面的修改
Mar 09 #PHP
PHP7 错误处理机制修改
Mar 09 #PHP
PHP7 字符串处理机制修改
Mar 09 #PHP
You might like
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
smarty中常用方法实例总结
2015/08/07 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
vue实现商品加减计算总价的实例代码
2018/08/12 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
微信跳一跳辅助python代码实现
2018/01/05 Python
python3实现基于用户的协同过滤
2018/05/31 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
django实现用户注册实例讲解
2019/10/30 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
django教程如何自学
2020/07/31 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
如何进行Linux分区优化
2016/09/13 面试题
网络维护中文求职信
2014/01/03 职场文书
寒假思想汇报
2014/01/10 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
民主评议党员总结
2014/10/20 职场文书
学习保证书怎么写
2015/02/26 职场文书
人事聘任通知
2015/04/21 职场文书
学校教学工作总结2015
2015/05/19 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis