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 和 MYSQL
Oct 09 PHP
修改了一个很不错的php验证码(支持中文)
Feb 14 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
PHP中判断变量为空的几种方法小结
Nov 12 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
php解决安全问题的方法实例
Sep 19 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
程序员编程十条戒律
2009/07/09 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP编写简单的App接口
2016/08/28 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
使用原生js封装的ajax实例(兼容jsonp)
2017/10/12 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
python检测服务器是否正常
2014/02/16 Python
使用Python对SQLite数据库操作
2017/04/06 Python
python 读写中文json的实例详解
2017/10/29 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
python 实现二维列表转置
2019/12/02 Python
使用K.function()调试keras操作
2020/06/17 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
生产经理的自我评价分享
2013/11/07 职场文书
学校宣传标语
2014/06/18 职场文书
园林系毕业生求职信
2014/06/23 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
行政主管岗位职责
2015/02/03 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby