在 extbase 中正确自动加载/注入命名空间 类
Autoloading / injecting namespaced classes in extbase correctly
我正在将一些 php classes 集成到使用 extension_builder 创建的 TYPO3 6.2 扩展中。 extbase版本也是6.2.
我想我遵循了 https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html
上的指示
命名 classes(正确吗?)
因为我认为我正在使用名称空间,所以我没有以 Tx_MyExtension_Utility_FooBar
的形式命名 类
上的建议用 @inject
注释注入了 class
这些是相关文件:
EXT:apievents/Classes/Utility/SomeClass.php:
class SomeClass {
// do something
}
EXT:apievents/Classes/Controller/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
}
当我 运行 它(这是一个调度程序任务)给我一个格式正确的错误时
Execution of task "Extbase CommandController Task (extbase)" failed
with the following message: Could not analyse class:namespace
STUBR\Apievents\Utility\SomeClass maybe not loaded or no autoloader?
因此 class 必须缺少某些内容才能加载。
我错过了什么或做错了什么?
将您的注入代码更改为
/**
* @var \STUBR\Apievents\Utility\SomeClass
* @inject
*/
protected $someClass;
在 @var
注释中,您只需指定完全限定的 class 名称。而已。没什么。确保您在实用程序 class 中也设置了命名空间
namespace STUBR\Apievents\Utility;
我正在将一些 php classes 集成到使用 extension_builder 创建的 TYPO3 6.2 扩展中。 extbase版本也是6.2.
我想我遵循了 https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html
上的指示命名 classes(正确吗?)
因为我认为我正在使用名称空间,所以我没有以
Tx_MyExtension_Utility_FooBar
的形式命名 类
- 上的建议用
@inject
注释注入了 class
这些是相关文件:
EXT:apievents/Classes/Utility/SomeClass.php:
class SomeClass {
// do something
}
EXT:apievents/Classes/Controller/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
}
当我 运行 它(这是一个调度程序任务)给我一个格式正确的错误时
Execution of task "Extbase CommandController Task (extbase)" failed with the following message: Could not analyse class:namespace STUBR\Apievents\Utility\SomeClass maybe not loaded or no autoloader?
因此 class 必须缺少某些内容才能加载。 我错过了什么或做错了什么?
将您的注入代码更改为
/**
* @var \STUBR\Apievents\Utility\SomeClass
* @inject
*/
protected $someClass;
在 @var
注释中,您只需指定完全限定的 class 名称。而已。没什么。确保您在实用程序 class 中也设置了命名空间
namespace STUBR\Apievents\Utility;