【问题标题】:Laravel Alias not finding classLaravel Alias 找不到课程
【发布时间】:2014-12-19 02:40:51
【问题描述】:

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

这是我的代码:

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

我正在尝试为其创建别名的类

class FrontendAssets{

    protected static $styles = [];
    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;
    }

    public static function assets($assets){
        return array_map(function ($asset){
                return $asset;
        }, array_unique($assets));
    }
} 

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

FrontendAssets::assets();

我已经尝试添加命名空间,但仍然没有任何乐趣。

如果我使用\FrontendAssets::assets(); 在我的控制器中,我可以使用这个类,所以我知道它已经被加载了

【问题讨论】:

    标签: php class laravel alias autoloader


    【解决方案1】:
    php artisan config:clear
    

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

    【讨论】:

    • 就是这样!需要清除缓存以供 Laravel 检测新别名! :D
    【解决方案2】:

    首先运行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 上寻找解释

    【讨论】:

    • 这是正确答案。我清除了缓存,但我在课堂前错过了 \ 并且它不起作用。起来!
    • 无论如何我都喜欢另一种方法,所以我不必添加 \,但是那条额外的行,但没关系。
    【解决方案3】:

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

    composer dump && php artisan optimize
    

    【讨论】:

      【解决方案4】:

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

      下面给出的命令将清除之前缓存的配置。

      php artisan config:clear
      

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

      php artisan config:cache
      

      清除配置缓存后,您将能够使用在config/app.php 中定义的别名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-04
        • 1970-01-01
        • 2015-07-27
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 2016-12-02
        • 2014-09-29
        相关资源
        最近更新 更多