Netbeans使用服务定位器暗示变量
Zend Framework 2使用一个服务定位器,我正在使用它从中加载表类 而不是编写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)
$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 shortcodevdoc
,它会自动填充变量和类名
我现在得到的是:
//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} */