2012-07-21 31 views
6

我知道这个问题已经被问到,但似乎自动加载过程与作曲家有点改变。将库添加到silex

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

所以我做了这个文件: 供应商\ LIB \ picture.php

<?php 
namespace MyNamespace; 

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

在供应商/作曲/ autoload_namespaces.php,我加入这行的大阵列:

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

我在主文件中加入了:

use MyNamespace\Picture as Picture; 

并称之为:

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

这给了我这个错误:

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

我只是不知道如何添加类,我可以从任何控制器,方便的使用,不带命令行(我不使用作曲家,我下载了预先配置好的silex),有什么想法?

回答

12

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

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

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

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

实际的解决方案是前两个答案的组合。但我认为弄清楚细节是很重要的;-)。

+1

在他的问题结尾,他明确表示他不使用作曲家。 – Maerlyn 2012-07-26 07:05:55

+0

Thx @igorw!把“src /”放在我身上! =)(虽然我想知道为什么) – 2013-01-24 08:46:30

2

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

+0

谢谢你,你的回答真的很有帮助。我还添加了实现ServiceProviderInterface并添加引导和注册方法,现在我没有错误。 – Vilrouge 2012-07-21 16:27:05

+0

如果我的答案解决了您的问题,请接受它。 – Maerlyn 2012-07-21 17:10:27

2

您可以将自己的代码添加到自动装入器,方法是将以下内容添加到composer.json (例如,

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