例如
$connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
$queryBuilder = $connectionPool->getQueryBuilderForTable($table);
$statement = $queryBuilder
->select('uid')
->from($table)
->orderBy('start_date', 'DESC')
->where(
$queryBuilder->expr()->lte('start_date', $queryBuilder->createNamedParameter($startDate, \PDO::PARAM_INT)),
$queryBuilder->expr()->neq('uid', $queryBuilder->createNamedParameter($currentUid, \PDO::PARAM_INT))
)
->setMaxResults(1)
->execute();
while ($row = $statement->fetch()) {
$prevs[] = $row;
}
如何让PhpStorm识别选择,expr,createNamedParameter,获取等方法。
答案 0 :(得分:4)
PhpStorm不自动知道$connectionPool
是什么类,因此也不知道从该类派生的所有类是什么类。您可以通过添加注释来告诉PhpStorm $connectionPool
是什么类:
/** @var ConnectionPool $connectionPool */
$connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
答案 1 :(得分:4)
如果您将TYPO3插件用于PhpStorm,则可以从makeInstance()
(以及更多功能)中获取正确的信息。
答案 2 :(得分:3)
您可以执行2个步骤来帮助PhpStorm识别项目外部的功能:
用它们各自的命名空间注释变量:
/** @var $queryBuilder \TYPO3\CMS\Core\Database\Query\QueryBuilder **/
$queryBuilder = $connectionPool->getQueryBuilderForTable($table);
如果多次使用,可以通过声明以下内容来缩短上述时间:
use \TYPO3\CMS\Core\Database\Query\QueryBuilder;
在文件顶部,您只需要
/** @var $queryBuilder QueryBuilder **/
第二步include,您的项目中的Typo3源(如果它们尚未包含在您的项目文件中),则PhpStorm将能够对其进行索引
答案 3 :(得分:0)
我发现为变量类型添加注释是不必要的,只会使源代码混乱。
通常,为了使PhpStorm查找类,方法等,您必须在项目中包括TYPO3源。
一旦您执行了此操作,并且PhpStorm扫描了文件,则应该可以执行以下任何操作:
另请参见DynamicReturnType插件和other plugins recommended for TYPO3 core development。核心附带的DynamicReturnType插件以及文件dynamicReturnTypeMeta.json应该为PhpStorm提供足够的信息,例如,用makeInstance实例化的类的返回类型。