作曲家不加载我自己的PSR
我似乎无法让作曲家使用psr-0 autoload机制来处理我自己的类/文件。 任何人都可以请阐明为什么下面的不工作?
我在错误日志中看到以下输出:
PHP致命错误:类'TestdirTest1'未在第5行的/home/webroot/bitlama/index.php中找到
它确实有效如果我取消注释显式的require语句(index.php:2)。
如果有人想知道 - 是的我已经以'php ../composer.phar install'的形式运行作曲家安装。
这是我的目录结构:
├── composer.json
├── index.php
├── testspacedir
│ └── Testdir
│ └── test1.php
└── vendor
├── autoload.php
└── composer
├── autoload_classmap.php
├── autoload_namespaces.php
├── autoload_real.php
└── ClassLoader.php
composer.json:
{
"autoload": {
"psr-0": { "Testdir": "testspacedir/"}
}
}
test1.php:
<?php
namespace Testdir;
class Test1 {
public function __construct()
{
echo "Woohoo Test1";
}
}
index.php文件:
<?php
require 'vendor/autoload.php';
//require 'testspacedir/Testdir/test1.php';
$test1 = new TestdirTest1();
供应商/ autoload.php:
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit7b4760e0f7ca9d6454dd2f098c374ba4::getLoader();
我的类文件被命名为test1.php
,而不是所需要的PSR-0命名约定Test1.php
。
你说它是有效的,因为你删除了require 'testspacedir/Testdir/test1.php';
这是正确的。
由于您在composer.json
的autoload
中定义了名称空间 - >文件夹结构, vendor/autoload.php
为您处理这些文件夹的加载。
看看这个vendor/autoload.php
文件,你会看到自己。
总结起来,作曲家为你处理文件的自动加载,所以你不必执行这些包括。 以下是http://getcomposer.org/doc/01-basic-usage.md#autoloading中的摘录
注意:Composer提供自己的自动加载器。 如果你不希望使用一个,你可以只包括供应商/作曲/ autoload_namespaces.php,它返回一个关联数组映射命名空间的目录。
链接地址: http://www.djcxy.com/p/17699.html