在 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

上的指示

这些是相关文件:

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;