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 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
php中的时间处理
Oct 09 PHP
php adodb连接不同数据库
Mar 19 PHP
php 中文和编码判断代码
May 16 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
php有效防止同一用户多次登录
Nov 19 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
Mar 05 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 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
php中explode与split的区别介绍
2012/10/03 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
采用call方式实现js继承
2014/05/20 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
Python程序设计入门(4)模块和包
2014/06/16 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
零基础小白多久能学会python
2020/06/22 Python
Python ellipsis 的用法详解
2020/11/20 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
应届生英语教师求职信
2013/11/05 职场文书
公司领导推荐信
2013/11/12 职场文书
春节联欢会主持词
2014/03/24 职场文书
青春奉献演讲稿
2014/05/08 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL