作曲家自动加载不会工作

时间:2015-11-25 14:42:40

标签: php composer-php autoload

我刚刚启动了一个新的PHP项目,我正在遇到自动加载器的问题。我搜索了错误并查阅了文档(http://www.php-fig.org/psr/psr-4/),但问题仍然存在。

因此,我创建了一个最小的例子来缩小错误的原因 - 但是,即使使用这个最小的例子,它也不会起作用:(

我的文件夹结构如下:

+ src/
| + Xyz.php
+ composer.json
+ test.php

这是我的代码

composer.json:

{
    "name": "sg/ABC",
    "description": "abc",
    "autoload": {
        "psr-4": {
            "sg\\ABC\\": "src/"
        }
    }
}

Xyz.php:

<?php namespace sg\ABC;
    class Xyz
    {}
?>

test.php的:

<?php namespace sg\ABC;
    use sg\ABC\Xyz;
    $a = new Xyz();
?>

即使运行composer install没有显示错误,我在运行代码时立即收到此错误:

$ php test.php 
PHP Fatal error:  Class 'sg\ABC\Xyz' not found in /dir/x/test.php on line 5

Fatal error: Class 'sg\ABC\Xyz' not found in /dir/x/test.php on line 5

另外,运行composer dump-autoload(正如此板中的建议)无效

2 个答案:

答案 0 :(得分:1)

您仍需要包含composer autoload.php file以包含已加载的库。

答案 1 :(得分:1)

您需要自动加载器..通常是def csv_reader(): with open('export.csv') as f: reader = csv.DictReader(f) for row in reader: yield {key: value for key, value in row.items()} generator = csv_reader() list = [] for i in generator: list.append(i)