【问题标题】:Fatal Error RecursiveIteratorIterator not found找不到致命错误 RecursiveIteratorIterator
【发布时间】:2013-01-21 16:26:22
【问题描述】:

正如标题所说,当我实例化一个类时,我会收到以下消息:

Fatal error: Class 'Envato\RecursiveIteratorIterator' not found in C:\Users\rgr\Apache\htdocs\Roland Groza [ 3.0 ]\class\envato\envato.php on line 359

你可以在这里查看课程:Class;

我正在从另一个文件实例化:

require("envato.php");
$test = new Envato\EnvatoAPIWrapper();
echo "User Vitals : ".$test->get_user_vitals("chaoscod3r")."<br>";

这个类被一个命名空间包裹着,所以这可能与它有关,但我不确定,因为我已经好几年没有编写 PHP 代码了。希望有人知道我做错了什么:)

【问题讨论】:

    标签: php class namespaces iterator spl


    【解决方案1】:

    要访问命名空间内的非命名空间类,如 PHP 和 SPL 的内部类,您必须使用完全限定的类名,如下所示:

    new \RecursiveIteratorIterator();
    

    或在开头显式导入:

    use \RecursiveIteratorIterator;
    

    然后像你一样正常使用它。

    【讨论】:

    • 这适用于我的所有方法还是仅适用于 PHP 核心方法?
    • 它适用于所有非命名空间的,无论是否用户定义。但不适用于函数,函数名称可以动态解析,因为它们不受自动加载的影响。
    【解决方案2】:

    在命名空间的顶部添加一个 use 语句...

    使用\RecursiveIteratorIterator;

    如果您不这样做,那么 PHP 期望 RecursiveIteratorIterator 存在于您当前的命名空间中,而不是在全局命名空间中(由前导 \ 指示)

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 1970-01-01
      • 2011-09-08
      • 2011-12-17
      • 2018-12-21
      • 2012-11-21
      • 2015-03-20
      • 2015-03-28
      • 2014-03-13
      相关资源
      最近更新 更多