Php 作曲家自动加载psr-4问题
我是作曲家的新手,所以请容忍我, 因此,我有一个从本地文件夹加载的包,在使用它时,出现以下错误: 致命错误:在中找不到类“mypkg\Layer\EasyCPT” 第5行的C:\xampp\htdocs\testwp\app\Cpt\location.php My Composer.json:Php 作曲家自动加载psr-4问题,php,composer-php,autoload,Php,Composer Php,Autoload,我是作曲家的新手,所以请容忍我, 因此,我有一个从本地文件夹加载的包,在使用它时,出现以下错误: 致命错误:在中找不到类“mypkg\Layer\EasyCPT” 第5行的C:\xampp\htdocs\testwp\app\Cpt\location.php My Composer.json: "repositories": [ { "type":"vcs", "url":"C:/xampp/htdocs/mypkg" } ], "require"
"repositories": [
{
"type":"vcs",
"url":"C:/xampp/htdocs/mypkg"
}
],
"require": {
"php": ">=7.0.0",
"mypkg/particles": "master"
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
软件包的编写者:
"minimum-stability": "dev",
"authors": [
{
"name": "Talha Abrar",
"email": "talha@themegeek.io"
}
],
"autoload": {
"psr-4": {
"Mypkg\\": "particles/"
}
}
Psr 4:
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Mypkg\\' => array($vendorDir . '/Mypkg/particles/particles'),
'App\\' => array($baseDir . '/app'),
);
我如何使用它:
<?php
namespace App\Cpt;
use Mypkg\Layer\EasyCPT;
class Location extends EasyCPT{
protected $plural = 'locations';
}
将命名空间用作:
use Particles\Layer\EasyCPT;
但在自动加载
部分中定义为:
"Mypkg\\": "particles/"
这是不一致的
您应该用正确的名称空间名称替换Mypkg
,例如
"autoload": {
"psr-4": {
"Particles\\": "particles/"
}
}
因此请求Particles\Layer\EasyCPT
名称空间将在Particles/Layer/EasyCPT.php
文件中查找类
根据:
在psr-4
键下,定义从名称空间到路径的映射(相对于包根)。当自动加载类(如Foo\\Bar\\Baz
namespace prefixFoo\\\
指向目录src/
时,自动加载程序将查找名为src/Bar/Baz.php
的文件,如果存在,则将其包括在内。请注意,与较早的PSR-0
样式相反,前缀(Foo\\\
)不存在于文件路径中
如果您的项目不遵循PSR-4方法,请使用classmap来扫描您的所有类,例如
"autoload": {
"classmap": ["particles/"],
"exclude-from-classmap": ["/tests/"]
}
要手动重新生成自动加载
,请运行:
composer dump-autoload -o
并检查
vendor/composer/
中的自动加载文件是否正确生成了对类的引用。在根项目中尝试composer dump autoload
,我尝试了很多次,仍然没有成功
composer dump-autoload -o