我正在将一些php类集成到使用extension_builder创建的TYPO3 6.2扩展中。 extbase版本也是6.2。
我想我遵循https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html
的指示命名空间类(正确吗?)
由于我认为我使用的是命名空间,因此我没有以Tx_MyExtension_Utility_FooBar
@inject
注释注册课程
以下是相关文件:
EXT:apievents /类别/效用/ SomeClass.php:
class SomeClass {
// do something
}
EXT:apievents /类别/控制器/ ImportCommandController.php
<?php
namespace STUBR\Apievents\Controller;
// Copyright, Package, License ...
class ImportCommandController extends \TYPO3\CMS\Extbase\Mvc\Controller\CommandController {
/**
* @var \namespace STUBR\Apievents\Utility\SomeClass
* @inject
*/
protected $SomeClass;
// do something
}
当我运行它时(它是一个调度程序任务)给我一个格式错误的错误
执行任务&#34; Extbase CommandController任务(extbase)&#34;失败 带有以下消息:无法分析类:名称空间 可能没有加载STUBR \ Apievents \ Utility \ SomeClass或没有自动加载器?
因此要加载的类必须缺少某些东西。 我错过了什么或做错了什么?
答案 0 :(得分:2)
将您的注射代码更改为
/**
* @var \STUBR\Apievents\Utility\SomeClass
* @inject
*/
protected $someClass;
在@var
注释中,您只需指定完全限定的类名。而已。没什么。确保您在实用程序类中也设置了命名空间
namespace STUBR\Apievents\Utility;