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面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
php读取EXCEL文件 php excelreader读取excel文件
Dec 06 PHP
php递归方法实现无限分类实例代码
Feb 28 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
Oct 24 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
php HTML无刷新提交表单
Apr 05 PHP
CI框架常用函数封装实例
Nov 21 PHP
PHP PDOStatement::closeCursor讲解
Jan 30 PHP
laravel 解决Validator使用中出现的问题
Oct 25 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
Apr 23 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
在smarty中调用php内置函数的方法
2013/02/07 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
php根据一个给定范围和步进生成数组的方法
2015/06/19 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
javascript hashtable 修正版 下载
2010/12/30 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
python字典排序实例详解
2015/05/20 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
python使用str &amp; repr转换字符串
2016/10/13 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Python 通配符删除文件的实例
2018/04/24 Python
利用python如何处理nc数据详解
2018/05/23 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
Python线程协作threading.Condition实现过程解析
2020/03/12 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题