作曲家自动加载 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的主要内容,如果未能解决你的问题,请参考以下文章