Php 在laravel中加载composer类
我正在尝试制作一个与laravel兼容的composer/packagist软件包。我用的是拉威尔5.5 我创建了一个包:Php 在laravel中加载composer类,php,laravel,composer-php,packagist,Php,Laravel,Composer Php,Packagist,我正在尝试制作一个与laravel兼容的composer/packagist软件包。我用的是拉威尔5.5 我创建了一个包:floor9design/machine identifier。Composer将此下载到供应商/floor9design很好,但尽管阅读/通过谷歌搜索如何做到这一点,我不确定如何将其包括在我的laravel项目中 PHP Storm正确地拾取了类,并按预期自动完成 到目前为止,我还没有修改任何文件。如果我将以下内容添加到控制器: 使用Floor9design\Machine
floor9design/machine identifier
。Composer将此下载到供应商/floor9design
很好,但尽管阅读/通过谷歌搜索如何做到这一点,我不确定如何将其包括在我的laravel项目中
PHP Storm正确地拾取了类,并按预期自动完成
到目前为止,我还没有修改任何文件。如果我将以下内容添加到控制器:
使用Floor9design\MachineIdentifier\MachineIdentifier代码>
(与页面上的某些类用法一起)
PHPStorm会自动完成这一点(就像其他有效调用的类一样)
当我尝试加载此文件时,出现以下错误:
未找到类“Floor9design\MachineIdentifier\MachineIdentifier”
我看了很多教程,很多信息中似乎都没有这最后一步
我意识到有三种方法:
首先:
直接包括_once
,这在工作时不是正常的方法
第二:
Laravel5.5之前的方法(向app.php
添加一些内容)
第三
Laravel 5.5进近和上升,自动检测某些东西
我故意说了一些东西,因为文档似乎在谈论服务提供商
,我根本不明白它们是如何工作的
让我把这句话换成一个问题和一个后续问题:
问题:除了include_once
,如何从Laravel中的floor9design/machine identifier
加载MachineIdentifier类
问题2:如果答案是通过服务提供商,你能简单地解释一下它们之间的关系吗
谢谢
答复(如下所示)
在composer repo上,我错误地指定了PSR4命名空间,现在更正为:
"autoload": {
"psr-4": {
"Floor9design\\MachineIdentifier\\": "src"
}
}
前一个命名空间有一个-
,这是一个非法字符。非常感谢lawrence cherone。您的PSR4在软件包中有误
floor9design\\machine identifier\\”:“src”
将导致composer/autoload_psr4.php映射到:
'floor9design\\machine-identifier\\' => array($vendorDir . '/floor9design/machine-identifier/src'),
不是有效的类命名空间
您应该更改PSR4以匹配您的类命名空间:
Floor9design\\MachineIdentifier\\”:“src”
一旦你修复了这个问题,你就可以像平常一样在项目中的任何地方使用它。感谢accept:),你可能会有兴趣从这个类中剥离出一些方法,以涵盖所有的系统信息:非常感谢,很高兴知道。我会复习这些。