我正在尝试将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();
在我的控制器中,我可以使用该类,所以我知道它是被劫持的
答案 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