在我的控制器的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会忽略注释。您需要删除类型提示,并且必须为@var
PropertyMapper提供注释,以获取有关如何正确映射传入数据的正确信息。因此,为了使上面的示例正常工作,必须以这种方式编写:
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VENDOR\Extension\Domain\Model\SomeModel> $someModelStorage
*/
public function indexAction($someModelStorage){
// do something
}
无论如何,文档注释对于文档化功能很有用,您应该编写它们,以便为其他开发人员甚至您将来的自己提供有关功能的更多信息;)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句