未找到 Laravel 助手类

Posted

技术标签:

【中文标题】未找到 Laravel 助手类【英文标题】:Laravel helper class not found 【发布时间】:2013-09-02 04:59:11 【问题描述】:

我已经添加了

app_path().'/classes',

到 ClassLoader::addDirectories 数组中的 global.php。在 app/classes/helpers/Url.php 我有:

<?php namespace Helpers;

class Url 

public static function prep($str)

    if ($str == 'http://' OR $str == '')
    
        return '';
    

    $url = parse_url($str);

    if ( ! $url OR ! isset($url['scheme']))
    
        $str = 'http://'.$str;
    

    return $str;


然后在一个视图中我有:

html::link(Helpers\URL::prep($place->url), $place->url, array('target' => '_blank'))

这在本地运行良好,但在我的服务器上出现错误:找不到类“Helpers\URL”。我尝试通过these steps,但它也没有工作。有什么想法吗?

【问题讨论】:

你运行 composer dump-autoload 了吗? 是的,但由于它没有加载到作曲家中,它没有做任何事情。我什至在 composer 中添加了 classes 目录,然后转储,仍然得到相同的结果。 Class Url Class URL ? 但是在 composer.json - 在“autoload”/“classmap”下 - 你添加了“app/classes”吗? 当您尝试在 global.php 中使用 app_path() 加载类时,namespace 将不起作用。如果你需要 namespace 那么你必须使用 composer.json 自动加载。 【参考方案1】:

我关注https://***.com/a/17091089/1454622(他的“选项 1”,我更喜欢)。

我遇到了同样的问题,它在我的本地服务器上运行,但在我的远程服务器上却没有。 这是我的应用/存储上的目录和文件权限问题。我的遥控器需要这些(感谢@elliotyap):

1) 我的助手类在app/libs 中,所以我在composer.json 文件的autoload 部分中添加了:"app/libs",

2)php composer.phar dump-autoload

它还需要一些权限更改:

3)sudo chgrp THE_SERVERS_WEB_SERVER_USER_HERE app/storage

【讨论】:

【参考方案2】:

好的,我发现了问题。我将“app/classes/helpers”重命名为“app/helpers”,然后将新的 app/helpers 添加到 composer.json 和 global.php 并运行 composer dump。查看一些 PHP 文档,似乎 PHP 有时会在目录和命名空间中使用“类”、“类”或其他保留类型字时遇到问题。我仍然不确定为什么这是在本地工作,但不是在服务器上。

【讨论】:

你可能有区分大小写的问题。 对不起,没有。如上述评论所述。我尝试了两种方法,但仍然遇到相同的错误,只是在不同的情况下。 当我将路径添加到 global.php 时,我的助手没有加载任何服务器,而是加载到另一台服务器,然后我添加到 composer.json 并执行转储自动加载,它们现在可以工作了。【参考方案3】:

在 config/app.php 的 aliases 数组中定义您的 Helper 外观,如下所示

'Helper' =&gt; 'Helpers\Url'

那你就可以Helper::prep()

【讨论】:

我刚试过这个,我仍然得到同样的错误,只是先加载了框架中的更多代码。

以上是关于未找到 Laravel 助手类的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 未找到类“Illuminate\Html\HtmlServiceProvider”

未找到 Laravel 5 类“Illuminate\Support\Facades\FormFacade”

laravel 类 'GuzzleHttp\Client' 未找到

未找到 Laravel 5 类“App\Http\Controllers\File”

Laravel 模型关系类未找到

未找到 Laravel 5 类“表单”