【发布时间】:2018-06-27 16:13:17
【问题描述】:
我正在尝试制作与 laravel 兼容的 composer/packagist 包。我正在使用 Laravel 5.5。
我创建了一个包:floor9design/machine-identifier。 Composer 将此下载到 vendors/floor9design 很好,但尽管阅读/谷歌搜索如何执行此操作,但我不确定如何将其包含在我的 laravel 项目中。
PHP Storm 正在正确选择课程,并按预期自动完成。
到目前为止,我还没有修改任何文件。如果我将以下内容添加到控制器:
use Floor9design\MachineIdentifier\MachineIdentifier;
(以及页面上的一些类用法)。
PHP Storm 会自动完成这一点(就像其他有效调用的类一样)。
当我尝试加载时,出现以下错误:
Class 'Floor9design\MachineIdentifier\MachineIdentifier' not found
我浏览了很多教程,但很多信息似乎都缺少这最后一步。
我意识到有三种方法:
首先:
直接include_once,在工作时,不是正常的做法
其次:
Laravel 5.5 之前的方法(将 something 添加到 app.php)
第三 Laravel 5.5 及更高版本,something 的自动检测。
我故意说一些东西,因为文档似乎在谈论ServiceProviders,我只是不明白它们是如何工作的。
让我将其改写为一个问题和一个后续问题:
问题:除了include_once,我如何在 Laravel 中从floor9design/machine-identifier 加载 MachineIdentifer 类。
问题 2:如果答案是通过服务提供商提供的,您能否简单解释一下它们之间的关系。
谢谢
答案(如下所示)
在作曲家 repo 中,我错误地指定了 PSR4 命名空间,现在已更正为:
"autoload": {
"psr-4": {
"Floor9design\\MachineIdentifier\\": "src"
}
}
之前的命名空间有一个-,这是一个非法字符。非常感谢 lawrence-cherone。
【问题讨论】:
-
感谢您的接受 :),您可能有兴趣从此类中删除一些方法,以涵盖所有系统信息:github.com/plinker-rpc/system/blob/master/src/System.php
-
非常感谢,很高兴知道这一点。我会审查这些。
标签: php laravel composer-php packagist