Laravel Alias没有找到课程

use*_*482 10 php alias class autoloader laravel

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

这是我的代码:

'aliases' => array(
        'FrontendAssets'    => 'Lib\FrontendAssets',
)
Run Code Online (Sandbox Code Playgroud)

我正在尝试为其制作别名的课程

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));
    }
} 
Run Code Online (Sandbox Code Playgroud)

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

FrontendAssets::assets();
Run Code Online (Sandbox Code Playgroud)

我尝试过添加名称空间但仍然没有喜悦.

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

ruu*_*ter 11

php artisan config:clear
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*łek 10

首先运行composer dump-autoload以确保可以找到该类.

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

<?php

namespace App\Http\Controllers;

class YourController {

}
Run Code Online (Sandbox Code Playgroud)

如果你想访问FrontendAssets类,你需要添加前导反斜杠,所以FrontendAssets::assets();不会工作,但\FrontendAssets::assets();会工作.

您也可以导入此类:

<?php

namespace App\Http\Controllers;

use FrontendAssets;

class YourController {

}
Run Code Online (Sandbox Code Playgroud)

现在你可以使用了FrontendAssets::assets();.如果不清楚您可能还想查看如何使用其他命名空间中的对象以及如何在PHP中导入命名空间的说明