作曲家不加载我自己的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.jsonautoload中定义了名称空间 - >文件夹结构, 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

上一篇: Composer is not loading my own psr

下一篇: Fast(er) way of indexing matrix in R