Php 第一个作曲家软件包-自动加载器不工作
我尽了最大努力找到一个适用的问题/答案,但我认为我对自动加载器了解不够,无法识别出合适的答案 我有一个包含以下composer.json的包: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",
{
"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
。