找不到作曲家安装的课程

时间:2014-03-03 20:04:22

标签: php class symfony composer-php

我使用以下命令在我的Symfony2应用程序中下载了createsend-php库:

composer require  campaignmonitor/createsend-php

已成功下载,但当我尝试使用它时..

use CS_REST_Lists;
...
public function testNewsletterAction() {

        //... retrieving the keys

        $api = new CS_REST_Lists($listId, $apiKey);
        var_dump($api->get());
        exit;

    }

我收到以下错误:

ClassNotFoundException: Attempted to load class "CS_REST_Lists" from the global namespace in ...

在use语句中,NetBeans建议使用类名btw。为什么它不起作用,我该如何解决?

2 个答案:

答案 0 :(得分:1)

根据libs文档:https://github.com/campaignmonitor/createsend-php您需要自己要求

require_once 'csrest_lists.php'

而不是

use \CS_REST_Lists;

虽然看起来他们的composer.json设置为自动加载它们,所以奇怪的是use语句不起作用。

答案 1 :(得分:0)

这不是解决方案,但它对我有用......

您不需要手动添加类图。如果查看 vendor / composer / autoload_classmap.php ,您可以见作曲家补充道:

  

' CS_REST_CLASSES' => $ vendorDir。' /campaignmonitor/createsend-php/csrest_administrators.php',

然后我尝试了两件事:

  • 在某处实例化我的课程:

$cm = new \CS_REST_Lists;

  • services.yml 中注入该课程:

my.service: class: My\Namespace\MyService arguments: [@campaign_monitor]

campaign_monitor:
    class: CS_REST_Lists
    arguments: ['', %campaignmonitor%]

奇怪的部分是实例化工作,但注入已触发:

  

PHP致命错误:Class' CS_REST_List'在1779行的/my/code/path/var/cache/dev/appDevDebugProjectContainer.php中找不到

所以我尝试在我的services.yml中注入一个不同的类图(i.g File_Iterator 来自phpunit)我认为像phpunit这样的库不会成为一个问题而且有效。然后我在services.yml File_Iterator 中替换为 CS_REST_List ,并且神奇地工作了......

所以...不确定出了什么问题,但我认为这个问题来自symfony的容器而不是作曲家。我使用了symfony 2.5.1