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 相关文章推荐
php获取参数的几种方法总结
Feb 18 PHP
php数组合并array_merge()函数使用注意事项
Jun 19 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php利用cookies实现购物车的方法
Dec 10 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
php使用socket post数据到其它web服务器的方法
Jun 02 PHP
配置Nginx+PHP的正确思路与过程
May 10 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
Laravel 解决composer相关操作提示php相关异常的问题
Oct 23 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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/04 星际争霸
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
如何实现JS函数的重载
2006/09/22 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
Python实现给qq邮箱发送邮件的方法
2015/05/28 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
个人求职信范例
2014/01/29 职场文书
室内设计专业自荐信
2014/05/31 职场文书
应届大专生自荐书
2014/06/16 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
初中美术教学反思
2016/02/17 职场文书
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS