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教程-第一天
Mar 18 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
php网站地图生成类示例
Jan 13 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
php实现简单文件下载的方法
Jan 30 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
PHP多线程模拟实现秒杀抢单
Feb 07 PHP
TP5框架页面跳转样式操作示例
Apr 05 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
Terran剧情介绍
2020/03/14 星际争霸
php+dbfile开发小型留言本
2006/10/09 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
python基于opencv实现人脸识别
2021/01/04 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
大学生暑期社会实践证明范本
2014/10/24 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫