Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 作曲家自动加载psr-4问题_Php_Composer Php_Autoload - Fatal编程技术网

Php 作曲家自动加载psr-4问题

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"

我是作曲家的新手,所以请容忍我, 因此,我有一个从本地文件夹加载的包,在使用它时,出现以下错误:

致命错误:在中找不到类“mypkg\Layer\EasyCPT” 第5行的C:\xampp\htdocs\testwp\app\Cpt\location.php

My Composer.json:

"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 prefix
Foo\\\
指向目录
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