Netbeans使用服务定位器暗示变量

Netbeans使用服务定位器暗示变量,netbeans,zend-framework2,service-locator,Netbeans,Zend Framework2,Service Locator,Zend Framework 2使用一个服务定位器,我正在使用它从中加载表类 而不是编写$table=$this->getServiceLocator()->get('Application\Model\TableName')我已经编写了一个助手函数$this->getTable($tableName)其中我只需提供类名,例如UserTable,函数在调用服务定位器和get调用模型之前以名称空间作为前缀 在我的控制器中,当我调用$table=$this->getTable($tableName)

Zend Framework 2使用一个服务定位器,我正在使用它从中加载表类

而不是编写
$table=$this->getServiceLocator()->get('Application\Model\TableName')我已经编写了一个助手函数
$this->getTable($tableName)
其中我只需提供类名,例如
UserTable
,函数在调用服务定位器和
get
调用模型之前以名称空间作为前缀

在我的控制器中,当我调用
$table=$this->getTable($tableName)时
如何获取
vdoc
命令,用
$tableName
的解析名称空间和类名来填充
$tableName
,而不是
ServiceLocator

/**
 * Get the requested model.
 * @param string $tableName
 * @return Application\Model\AbstractTable
 */
public function getTable($tableName) {
    return $this->getServiceLocator()->get('Application\Model\\'.$tableName);
}
Netbeans有一个变量doc shortcode
vdoc
,它会自动填充变量和类名

我现在得到的是:

//typing vdoc creates this
/* @var $table ServiceLocatorInterface */
$table = $this->getTable('UserTable');
我想要的是:

/* @var $table Application\Model\UserTable */
$table = $this->getTable('UserTable');
我怀疑我需要指定在
getTable
函数中返回的变量,但是我如何动态地这样做呢

e、 g


我通常会在变量上方添加注释,以达到您的目的,就像您在问题中所做的那样。在
$table
行上方添加此
/*@var$table Application\Model\UserTable*/
行是否对您不起作用,或者它正在起作用,但您只需要一个动态解决方案。我正在寻找一个动态解决方案,因此,当我键入
vdoc
时,netbeans将自动使用正确的名称空间/类为什么不使用类FQCN来将所需内容传递给SM?如果您在
'service\u manager'=>['factories'=>[{…}],]和
(在
{…}
配置中的键/值对)中注册类和工厂,您只需在工厂中执行
$container->get(MyClass::class)
(或
$this->getServiceLocator()->get(MyClass::class)
)。您不应该在控制器(或not工厂的其他地方)中使用
$this->getServiceLocator()
,无论这是否在包装器/帮助器函数中……但是,对于您的类型提示,类似于您所寻找的?在PhpStorm中,类型提示块以
/**
开始,而不是
/*
,然后使用
空格或
输入将创建您需要的块,因为它知道,或者它将创建一个您仍然需要在其中定义类型的块(在
@var
之后)
/* @var $model Application\Model\{@@@$tableName} */