我已经在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。为什么它不起作用,我该如何修复它?
根据libs文档:https://github.com/campaignmonitor/createsend-php你需要自己要求文件
require_once 'csrest_lists.php'
而不是
use CS_REST_Lists;
尽管看起来他们的composer.json是为了自动加载它们而设置的,所以use语句不起作用是很奇怪的。
这不是一个解决方案,但它对我有效…
您不需要手动添加类映射如果您查看vendor/comporter/autoload_classmap.php,您可以看到添加了composer:
'CS_REST_CLASSES'=>$vendorDir.'/campaignmonitor/createsend php/csrest_administrators.php',
然后我尝试了两件事:
- 在某处实例化我的类:
$cm = new CS_REST_Lists;
- 在我的服务中注入类。yml:
my.service:
class: MyNamespaceMyService
arguments: [@campaign_monitor]
campaign_monitor:
class: CS_REST_Lists
arguments: ['', %campaignmonitor%]
奇怪的部分是实例化一直在工作,但注入触发:
PHP致命错误:在第1779行的/my/code/path/var/cache/dev/appDevDebugProjectContainer.PHP中找不到类"CS_REST_List">
所以我试图在我的服务中注入一个不同的类映射。yml(即phpunit中的File_Iterator)我认为像phpunit这样的库不会成为问题,并且它起了作用。然后我用CS_REST_List替换了services.ymlFile_Iterator,它神奇地起了作用。。。
所以。。。不确定出了什么问题,但我认为问题来自symfony的容器,而不是composer。我使用了symfony 2.5.1