【问题标题】:Laravel 4 class not found and namespaces未找到 Laravel 4 类和命名空间
【发布时间】:2014-04-05 00:36:32
【问题描述】:

在一个 Laravel 4 站点中,我安装了一个标签云库。在这个库中,我希望编辑一个函数的返回行(我在这里简化了它):

return "<span>
      {$Variable}
    </span>";

并使$变量成为链接:

return "<span>
       <a href='".Request::url()."/myroute/'>
         {$variable}
       </a>
    </span>";

当我尝试运行页面时出现错误:

Class 'Arg\Tagcloud\Request' not found 

我认为这可能意味着 Request 类在 tagcloud 类中不可见,它与命名空间有关。

在 tagcloud 类文件的顶部有以下几行:

<?php namespace Arg\Tagcloud;
use Illuminate\Support\Facades\Facade;

我找到了这个页面(laravel 命名空间列表) http://laravel.com/api/index.html

我用过

    use Illuminate\Routing;

     use Illuminate;

我将它们添加到上述前两个“使用”语句的下方,但出现相同的错误(找不到类)。是找到正确的命名空间还是其他问题?任何人都可以帮忙吗?谢谢。

编辑:我发现这种方式可以在不使用的情况下做我想做的事 请求::url():

        return "<span>
       <a href='/mysitename/public/myroute/{$variable}'>
         {$variable}
       </a>
    </span>";

【问题讨论】:

  • 感谢您的回答。现在可以了。

标签: php laravel namespaces


【解决方案1】:

当我尝试运行页面时出现错误:

Class 'Arg\Tagcloud\Request' not found

这是因为您使用的是来自 Arg\Tagcloud 命名空间的 Request 类,而当您使用 Request::someMethod() 框架时,Request 类位于同一命名空间下,即:

Arg\Tagcloud\Request

但是,实际上,Request 类位于 Illuminate\Http 命名空间下,这就是发生错误的原因。为了克服这个问题,你可以使用这样的东西:

\Request::someMethod();

或者您可以在班级顶部使用以下内容:

use \Request;

您不需要使用use Illuminate\Request;,因为Request 外观类在全局命名空间(作为别名)中可用,它将解析Illuminate\Http\Request 类。因此,您可以在代码中直接使用Request::someMethod()

【讨论】:

    【解决方案2】:

    每当您将类放入命名空间时,您在该类中引用的任何其他类都假定它也在同一个命名空间中,除非您另有说明。

    因此,由于您在直接引用 Request::url() 时将命名空间设置为 Arg\Tagcloud,因此 PHP 认为您是在告诉它使用 Arg\Tagcloud 命名空间内的 Request 类。

    有两种解决方案:

    解决方案 1

    Request 前面添加\,告诉PHP 使用全局命名空间,而不是Arg\Tagcloud 命名空间。

    例如,&lt;a href='".\Request::url()."/myroute/'&gt;

    解决方案 2

    use 班级。

    只需将use Request 添加到您的类的顶部(在您的命名空间下),这会让 PHP 知道您想要使用这个类,但它不属于当前的命名空间。

    例如,

    <?php namespace Arg\Tagcloud;
    
    use Request;
    

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 2021-12-31
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 2016-05-03
      相关资源
      最近更新 更多