Laravel Alias没有找到课程

时间:2014-10-23 12:20:20

标签: php class laravel alias autoloader

我正在尝试将Alias注册到一个类,但是Laravel无法找到该类,我可以直接在我的控制器中引用该类,所以我知道它已正确加载。

这是我的代码:

'aliases' => array(
        'FrontendAssets'    => 'Lib\FrontendAssets',
)

我试图为

创建别名的课程
class FrontendAssets
{
    /**
     * Styles array to include on every admin page
     * @var array
     */
    protected static $styles = [];
    /**
     * Scripts array to include on every admin page
     * @var array
     */
    protected static $scripts = [];

    public static function styles()
    {
        return static::assets(static::$styles);
    }

    public static function addStyle($style)
    {
        static::$styles[] = $style;
    }

    public static function scripts()
    {
        $scripts = static::assets(static::$scripts);

        return $scripts;
    }

    public static function addScript($script)
    {
        static::$scripts[] = $script;
    }

    /**
     * @param $assets
     * @return array
     */
    public static function assets($assets)
    {
        return array_map(function ($asset)
        {
            return $asset;
        }, array_unique($assets));
    }
} 

这就是我想在我的控制器中调用

FrontendAssets::assets();

我尝试过添加名称空间,但仍然不喜欢。

如果我使用\FrontendAssets::assets(); 在我的控制器中,我可以使用该类,所以我知道它是被劫持的

4 个答案:

答案 0 :(得分:9)

首先运行composer dump-autoload以确保找到该课程。

现在,当你在命名空间中有控制器时,例如:

<?php

namespace App\Http\Controllers;

class YourController {

}

如果您想要访问FrontendAssets课程,则需要添加前导反斜杠,因此FrontendAssets::assets();无法正常工作,但\FrontendAssets::assets();会有效。

您也可以导入此类:

<?php

namespace App\Http\Controllers;

use FrontendAssets;

class YourController {

}

现在您可以使用FrontendAssets::assets();了。如果不清楚您可能还希望在How to use objects from other namespaces and how to import namespaces in PHP

处寻找解释

答案 1 :(得分:9)

php artisan config:clear

也可能有所帮助。如果您之前使用config:cache缓存了配置文件,因为别名是在app config中定义的。

答案 2 :(得分:0)

Laravel缓存配置,以避免运行时加载开销。您必须运行给定的artisan命令之一,

以下给定命令将清除先前缓存的配置。

php artisan config:clear

和下面给出的命令将清除并重新缓存配置。

php artisan config:cache

清除配置缓存后,您将可以使用Alise在config/app.php中进行定义。希望对您有帮助。

答案 3 :(得分:0)

您需要清空缓存并转储自动加载,您可以使用单个命令

composer dump && php artisan optimize