6

我知道这个问题已经被问过了,但似乎自动加载过程随着作曲家而改变了一点。

我只想在我的 silex 项目中添加一个类库。

所以我制作了这个文件:vendor\lib\picture.php

<?php
namespace MyNamespace;

class Picture
{
    function testage()
    {
        echo 'hihaaa ça marche'; exit;
    }
}

在 vendor/composer/autoload_namespaces.php 中,我将此行添加到大数组中:

'MyNamespace' => $vendorDir . '/lib/',

在主文件中我添加了:

use MyNamespace\Picture as Picture;

并这样称呼它:

$app->register(new Picture());

这给了我这个错误:

Fatal error: Class 'MyNamespace\Picture' not found...

我只是不知道如何添加一个可以从任何控制器轻松使用的类,无需命令行(我不使用作曲家,我下载了预配置的 silex),知道吗?

4

3 回答 3

12

如果您使用的是作曲家,则不应更改供应商目录。您不应向其中添加文件,也不应修改作曲家生成的文件。

我建议您将这些类放入src目录中。@gunnx 展示了如何在 中配置自动加载composer.json,以便在每次运行时重新生成它composer install

该文件将位于src/MyNamespace/Picture.php. 自动加载配置composer.json将是:

{
    "autoload": {
        "psr-0": { "MyNamespace": "src/" }
    }
}

实际的解决方案是前面两个答案的组合。但我认为正确获取细节很重要;-)。

于 2012-07-21T19:17:15.180 回答
2

您的图片类应该在这个文件中:vendor/lib/MyNamespace/Picture.php. 注意完整的命名空间和大小写。

于 2012-07-21T16:07:04.377 回答
2

您可以通过将以下内容添加到您的 composer.json 来将您自己的代码添加到自动加载器,例如

{
"autoload": {
    "psr-0": {"Acme": "src/"}
}
于 2012-07-21T18:01:42.740 回答