php - PHP 7.4 及更高版本的 WDDX 函数替换
问题描述
我们使用 WDDX_serialize 和 WDDX_unserialize 函数,但从 PHP 7.4 开始不再支持这些函数。因此,我们在基于 PHP 7.4 的服务器上尝试了 Pear 的 WDDX 部分的源代码,但我们不想安装整个 PEAR 包以包含在我们的产品中。
https://pear.php.net/package/XML_Parser2
https://pear.php.net/package/XML_Wddx
当我试图反序列化时,我偶然发现了一个通过引用初始化的类......呃......
$t = &new XML_Wddx;
显然,PHP 7.4 不接受这一点,所以我删除了 & 符号。
我使用了 XML_Parser2(因为 XML_Parser 被它取代了)和 XML_wddx,下载了源代码并用测试代码解压缩了类。似乎 XML_wddx 使用了旧的 XML_Parser,它的引用被我替换为对 XML_Parser2 的引用。
但是下一个问题更严重:我在两个类的任何地方都找不到函数 XML_Parser()。对 $t->XML_Parser() 的调用是从反序列化函数完成的。
static function deserialize($data)
{
if (function_exists('wddx_deserialize')) {
return wddx_deserialize($data);
}
//!! Constructor by reference ???
//$t = &new XML_Wddx;
$t = new XML_Wddx;
//!! This function DOES NOT EXIST in XML_Parser and XML_wddx, so PHP says BOOM !
$t->XML_Parser();
$t->parseString($data);
return $t->result['data'];
}
有谁知道我该如何解决这个问题?
解决方案
推荐阅读
- database - 是否可以在 Microsoft Access 的表单中向表中添加多条记录?
- python - Django REST API、VUE 和 Scrapy 之间的套接字编程
- nginx - NGINX 缓存清除 CSS JS URL 重写
- json - SQL Server 中的 Json 转换 - 多行到单个 json 数组
- mysql - 沙盒数据库的最佳实践是什么
- r - 如何在R中将下划线替换为逗号
- rate-limiting - Spring Cloud Gateway:通过解析主体进行速率限制
- python - 如何从 python 更新 Solidworks 宏文件
- snowflake-cloud-data-platform - 可以像中缀运算符一样使用的雪花 UDF
- android - LifecycleService : 绑定或不绑定