【问题标题】:How to include FluentDom library into my PHP file?如何将 FluentDom 库包含到我的 PHP 文件中?
【发布时间】:2019-02-13 15:43:15
【问题描述】:

前提条件:拥有用 PHP 编写的亚马逊 MWS 演示文件。亚马逊以 XML 格式响应结果。 我的工具适用于 Amazon 的输出,仅适用于 json。

需要将亚马逊的输出转换成json。

  1. 我从这里下载了 FluentDOM https://github.com/ThomasWeinert/FluentDOM
  2. 在我的脚本附近解压
  3. 试图在我的文件中包含 FluentDom 库

我的脚本路径:

C:\xampp\htdocs\src\MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php

FluentDom 的路径:

C:\xampp\htdocs\src\src\FluentDOM.php

我尝试用这种方式连接库

include('../../src/FluentDOM.php');

以这种方式从 XML 转换为 Json(在 StackOverflow 上的其他线程中看到):

$dom = new DOMDocument();
$dom->loadXML($response->toXML());
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
//      echo $dom->saveXML();
$json = new \FluentDOM\Serializer\Json\RabbitFish($dom->saveXML());
$object = json_decode($json);
echo "<pre>" . print_r( $object, true) . "</pre>";
echo "<script>console.log({$json})</script>";

运行时得到

致命错误:在第 43 行的 C:\xampp\htdocs\src\src\FluentDOM.php 中,带有类类型提示的参数的默认值只能为 NULL

FluentDOM.php 第 43 行:

public static function load($source, string $contentType = 'text/xml', array $options = []): \FluentDOM\DOM\Document {

【问题讨论】:

  • 看起来您在 PHP5 上运行,但您尝试执行的代码是 PHP7(函数参数中有类型提示)
  • 我检查了,你是对的:USER - PC@SASHA c:\xampp # php -v PHP 5.6.40 (cli) (built: Jan 9 2019 15:12:06) 版权所有 ( c) 1997-2016 PHP Group Zend Engine v2.6.0,版权所有 (c) 1998-2016 Zend Technologies
  • 用 PHP 7.* 安装了 XAMMP。变得更好,但没有那么多。致命错误:未捕获错误:在 C:\xampp\htdocs\src\MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php:118 中找不到类“FluentDOM\Serializer\Json\RabbitFish”:118 堆栈跟踪:#0 C:\xampp\htdocs\src \MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php(85):invokeListMatchingProducts(Object(MarketplaceWebServiceProducts_Client), Object(MarketplaceWebServiceProducts_Model_ListMatchingProductsRequest)) #1 {main} 在 C:\xampp\htdocs\src\MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php 第 118 行抛出

标签: php json xml


【解决方案1】:

FluentDOM 7 需要 PHP >= 7.0。您可以使用旧版本。 FluentDOM 6.2 需要 PHP >= 5.6

但是 FluentDOM 是一个 Composer 包。您确实应该使用 Composer 将其添加到您的项目中。它将安装兼容版本(如果您定义它)​​并处理自动加载器(您当前的错误)。

FluentDOM 5.3 是最后一个包含“_require.php”以支持手动安装的版本。

【讨论】:

    猜你喜欢
    • 2015-04-25
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2015-09-23
    • 2019-09-15
    相关资源
    最近更新 更多