在laravel中加载一个作曲家类

问题描述 投票:2回答:1

我正在尝试制作兼容laravel的composer / packagist包。我正在使用Laravel 5.5。

我创建了一个包:floor9design/machine-identifier。 Composer下载到vendors/floor9design很好,但尽管阅读/谷歌搜索如何做到这一点,我不知道如何将这包括在我的laravel项目中。

PHP Storm正在正确地提升课程,按照预期自动完成。

到目前为止我还没有修改任何文件。如果我将以下内容添加到控制器:

use Floor9design\MachineIdentifier\MachineIdentifier;

(以及页面上的一些类用法)。

PHP风暴自动完成此功能(与其他有效调用的类一样)。

当我尝试加载它时,会出现以下错误:

Class 'Floor9design\MachineIdentifier\MachineIdentifier' not found

我已经浏览了大量的教程,并且很多信息似乎都缺少这最后一步。

我意识到有三种方法:

第一:直接qazxsw poi,虽然工作,但不是正常的方法

其次:Pre-laravel 5.5方法(在include_once上添加一些东西)

第三,Laravel 5.5进近,自动检测某些东西。

我故意说了些什么,因为文档似乎谈论app.php,我根本不知道它们是如何工作的。

让我把它改成一个问题和一个后续问题:

问题:除了ServiceProviders之外,如何从Laravel中的include_once加载MachineIdentifer类。

问题2:如果答案是通过服务提供商,您可以简单地解释它们之间的关系。

谢谢

答案(如下所述)

在作曲家回购中,我错误地指定了PSR4名称空间,现在更正为:

floor9design/machine-identifier

之前的命名空间有一个 "autoload": { "psr-4": { "Floor9design\\MachineIdentifier\\": "src" } } ,这是一个非法字符。非常感谢lawrence-cherone。

php laravel composer-php packagist
1个回答
2
投票

您的PSR4包装错误

-

将导致composer / autoload_psr4.php映射到:

floor9design\\machine-identifier\\": "src"

哪个不是有效的类命名空间。

您应该更改PSR4以匹配您的类命名空间:

'floor9design\\machine-identifier\\' => array($vendorDir . '/floor9design/machine-identifier/src'),

一旦你修复了它,你就可以在项目的任何地方正常使用它。

© www.soinside.com 2019 - 2024. All rights reserved.