Php 第一个作曲家软件包-自动加载器不工作

Php 第一个作曲家软件包-自动加载器不工作,php,composer-php,autoload,Php,Composer Php,Autoload,我尽了最大努力找到一个适用的问题/答案,但我认为我对自动加载器了解不够,无法识别出合适的答案 我有一个包含以下composer.json的包: { "name": "Pva_agent", "type":"library", "description" : "query the pva agent", "version":"0.1b", "authors" : [ { "name":"Ed Greenberg",

我尽了最大努力找到一个适用的问题/答案,但我认为我对自动加载器了解不够,无法识别出合适的答案

我有一个包含以下composer.json的包:

{
    "name": "Pva_agent",
    "type":"library",
    "description" : "query the pva agent",
    "version":"0.1b",
    "authors" : [
        {
            "name":"Ed Greenberg",
            "email":"ed@precisionpros.com"
        }
    ],
    "minimum-stability":"dev",
    "require": {},
    "autoload": {
        "psr-0": {
            "Pva_agent": "."
        }
    }

}
composer安装包后的我的目录结构:

.
./vendor
./vendor/autoload.php
./vendor/Pva_agent
./vendor/Pva_agent/Agent.php
./vendor/Pva_agent/composer.json
./vendor/Pva_agent/.gitignore
./vendor/composer
./vendor/composer/autoload_psr4.php
./vendor/composer/autoload_real.php
./vendor/composer/autoload_classmap.php
./vendor/composer/autoload_namespaces.php
./vendor/composer/installed.json
./vendor/composer/autoload_static.php
./vendor/composer/ClassLoader.php
./vendor/composer/LICENSE
./composer.lock
./composer.json
./test_pva_agent.php
我的测试程序:

<?php
require_once('vendor/autoload.php');

use Pva_agent\Agent;

$agent = new Agent();
我认为我不需要“use”语句,因为自动加载程序应该找到类,对吗

有人能告诉我问题出在哪里吗

谢谢


Ed Greenberg

您的Pva\u代理库不应位于
供应商/
目录中。此目录应仅包含Composer自动生成的数据。此目录通常不存储在VCS中

<>你应该考虑将你的目录结构重构成与此类似的东西:

.
|____composer.json
|____composer.lock
|____src
| |____Pva_agent
|____vendor
您的库功能应添加到
src/Pva\u agent
目录中

考虑使用PSR-4而不是PSR-0实现功能,因为添加类时无需重新生成自动加载程序。必须在添加classed后的PSR-0情况下运行

对于上面的目录结构和PSR-4自动加载程序,您的
composer.json
autoload部分应该与下面的部分类似:

"autoload": {
    "psr-4": { "Pva_agent\\": "src/Pva_agent" }
}

在此之后,您的库应自动加载。自动加载的库将在
Pva\u代理
命名空间下注册。

您的Pva\u代理库不应位于
供应商/
目录下。此目录应仅包含Composer自动生成的数据。此目录通常不存储在VCS中

<>你应该考虑将你的目录结构重构成与此类似的东西:

.
|____composer.json
|____composer.lock
|____src
| |____Pva_agent
|____vendor
您的库功能应添加到
src/Pva\u agent
目录中

考虑使用PSR-4而不是PSR-0实现功能,因为添加类时无需重新生成自动加载程序。必须在添加classed后的PSR-0情况下运行

对于上面的目录结构和PSR-4自动加载程序,您的
composer.json
autoload部分应该与下面的部分类似:

"autoload": {
    "psr-4": { "Pva_agent\\": "src/Pva_agent" }
}

在此之后,您的库应自动加载。您的自动加载库将在
Pva\u代理
命名空间下注册。

Hmmm。。。谢谢你,卢卡斯,但是你的回答会产生更多的问题:)composer把我的库放在vendor下,就像它会把我从网上得到的任何东西放在vendor下一样。composer不应该把你的源代码放在
vendor/
下。当您深入到
vendor/
文件夹时,您应该会在列表中看到库的路径:
vendor/composer/autoload_psr4.php
。您可以检查my的结构作为示例。尝试克隆项目并运行
composer update
.Hmmm。。。谢谢你,卢卡斯,但是你的回答会产生更多的问题:)composer把我的库放在vendor下,就像它会把我从网上得到的任何东西放在vendor下一样。composer不应该把你的源代码放在
vendor/
下。当您深入到
vendor/
文件夹时,您应该会在列表中看到库的路径:
vendor/composer/autoload_psr4.php
。您可以检查my的结构作为示例。尝试克隆项目并运行
composer update