TYPO3扩展:为什么在此注释栏中需要符号?

Mondblut

在我的控制器的TYPO3扩展中:以下代码是做什么的,或者是“为什么在注释块中需要此符号?”。

 /**
  * action show
  *
  * @param \Cjk\Icingaconfgen\Domain\Model\Appliance $appliance
  * @return void
  */
public function showAction(\Cjk\Icingaconfgen\Domain\Model\Appliance $appliance)
    {
        $this->view->assign('appliance', $appliance);
    }

我已经在函数中定义了参数,那么为什么注释块呢?我知道这是必要的,但我从未理解过这个概念。

凯文·迪切德

doc块中的注释确定PropertyMapper如何将传入的POST或GET数据映射到适当的对象中。正如Mathias Brodala在回答中所说的那样,如果您有参数的类型提示,那么您本身就不需要它们,但是对此有一点例外。如果您的操作需要一个ObjectStorage,则可能需要提示该ObjectStorage的内容类型。否则,PropertyMapper无法正确转换传入的数据。例如:

/**
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VENDOR\Extension\Domain\Model\SomeModel> $someModelStorage
 */
public function indexAction(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $someModelStorage){
    // do something
}

由于类型提示,此示例代码将失败。这是因为@var如果存在类型提示,则extbase会忽略注释。您需要删除类型提示,并且必须为@varPropertyMapper提供注释,以获取有关如何正确映射传入数据的正确信息。因此,为了使上面的示例正常工作,必须以这种方式编写:

/**
 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VENDOR\Extension\Domain\Model\SomeModel> $someModelStorage
 */
public function indexAction($someModelStorage){
    // do something
}

无论如何,文档注释对于文档化功能很有用,您应该编写它们,以便为其他开发人员甚至您将来的自己提供有关功能的更多信息;)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章