我正在尝试在TYPO3 6.2的自定义extbase扩展中嵌入第三方库,以便能够对dropbox进行身份验证。
https://github.com/kunalvarma05/dropbox-php-sdk
由于库应该通过composer安装,我在本地完成了这个并将生成的字段上传到服务器。我现在有以下附加目录:
ext:myext
+Classes
+vendor
+composer
+guzzlehttp
+kunalvarma05/dropbox-php-sdk/src/Dropbox
Dropbox库的命名空间为Kunnu\Dropbox
,主类为Kunnu\Dropbox\DropboxApp
;
我期望自动发现该命名空间,因为它位于Classes
。
所以我把它嵌入我的控制器中(也试过DI,效果相同)
namespace STUBR\Myext\Controller;
use Kunnu\Dropbox\DropboxApp;
后来在班级$app = new \DropboxApp("client_id", "client_secret");
结果:
无法分析类:Kunnu \ Dropbox \ DropboxApp可能没有加载或没有自动加载器?
接下来试试;我跟着http://insight.helhum.io/post/130876393595/how-to-configure-class-loading-for-extensions-in(适用于TYPO3 7.x,但也引用了6.x)并尝试了ext_emconf.php
中的以下两个变体:
'autoload' => array(
'psr-4' => array('Kunnu\\Dropbox\\' => 'Classes')
),
或
'autoload' =>
array(
'classmap' => array('Classes')
),
相同(非)效果。
我不认为我必须继续添加ext_autoload.php
,因为所有 命名空间,对吧?
所以我想我在这里做了一些完全错误的事情。也许我不应该在类中包含库,但是创建某种单独的包装器扩展,它是我的扩展的依赖?
什么是正确的方法?