作曲家自动加载 Laravel 5.5

Posted

技术标签:

【中文标题】作曲家自动加载 Laravel 5.5【英文标题】:Composer Autoload Laravel 5.5 【发布时间】:2018-06-15 20:12:03 【问题描述】:

我在 5.5 版本开始了一个 laravel 项目,我一直在使用 5.1 版本。

在这个版本中,我使用文件夹 'nob' 并使用它来开发一些类以将它们变成组件。

我在5.1版本中使用了如下composer.json:

"autoload": 
    "classmap": [
        "database"
    ],
    "psr-4": 
        "App\\": "app/",
        "Nob\\": "nob/"
    
,

这是 5.5 版:

"autoload": 
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": 
        "App\\": "app/",
        "Nob\\": "nob/"
    
,

我收到此错误:

这是类,她的命名空间是正确的

<?php namespace Nob\Payeezy\Types;

use Nob\Payeezy\Payeezy;

class Authorization extends Payeezy

这就是树:

我使用 PhpStorm,他 recognizes the namespace

我不知道会发生什么,我使用了 composer dump-autoload 什么都没用。

【问题讨论】:

composer.json 中的 config.optimize-autoloader 是否设置为 true?如果是这样,看看这个:***.com/questions/25619063/… 是的,它设置为 true,我删除了 composer.lock 文件并使用了 composer update。我正在等待它结束:/ 没什么,它不起作用:/ 如果没有任何效果,我建议评估一下为什么您需要在 App 命名空间之外而不是在像 App\Classes\Nob 这样的命名空间中使用您的核心应用程序代码。也许它应该是它自己的包?如果是这样,您可以拥有Composer load private packages 和see Laravel's documentation on developing packages。 原因是我在 5.1 中工作得非常好并且工作得很好,nob 的所有内容并不专属于该应用程序,因为我将在我并行执行的其他项目中使用它,所以我这样做了不认为它是应用程序的一部分,但如果在 5.5 中是唯一可行的方法,那么我将不得不这样做。 【参考方案1】:

当我在我的 PhpStorm 上尝试时,您的代码是正确的。但是你可以运行以下三个命令:

$ php artisan clear-compiled 
$ composer dump-autoload
$ php artisan optimize

这将清除当前编译的文件,更新它需要的类,然后将它们写回,这样你就不必再做一次了。

【讨论】:

$ php artisan optimize 在 Laravel 5.5 中被弃用(并且什么都不做),并将在 5.6 中删除。 laravel-news.com/laravel-5-6-removes-artisan-optimize Y 使用 php artisan clear-compiled 和 composer dump-autoload 什么都没有.. :/【参考方案2】:

您可以使用此命令可能会对您有所帮助:

composer dump-autoload -o

祝你好运

【讨论】:

我已经反复使用了这个,但什么也没有:/

以上是关于作曲家自动加载 Laravel 5.5的主要内容,如果未能解决你的问题,请参考以下文章

作曲家转储自动加载无法识别的命令

作曲家转储自动加载,问题

laravel 5.2 中的作曲家更新

psr-0 与作曲家自动加载不工作,但它与 psr-4 自动加载完美配合

作曲家安装,自动加载转储后事件返回错误

Laravel 包:发现解决