TYPO3 queryBuilder,如何让PhpStorm识别方法?

时间:2019-09-18 09:18:39

标签: typo3 phpstorm

例如

        $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,获取等方法。

4 个答案:

答案 0 :(得分:4)

PhpStorm不自动知道$connectionPool是什么类,因此也不知道从该类派生的所有类是什么类。您可以通过添加注释来告诉PhpStorm $connectionPool是什么类:

/** @var ConnectionPool $connectionPool */
$connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);

答案 1 :(得分:4)

如果您将TYPO3插件用于PhpStorm,则可以从makeInstance()(以及更多功能)中获取正确的信息。

https://plugins.jetbrains.com/plugin/9496-typo3-cms-plugin

答案 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源。

  1. 您可以创建一个PHP项目,其中包括您的整个Web根目录(通常是“公共”文件夹),但不包括filadmin,uploads,typo3temp等目录。排除这些目录很重要,这样PhpStorm不会不必要地对其进行扫描。 (特别是如果您运行核心功能测试,则强烈建议这样做。)我发现这是最实用的方法,对于调试和核心开发也很有用
  2. 您可以为扩展名创建PhpStorm项目,并包括TYPO3源。我不知道这些,但应该可以。

一旦您执行了此操作,并且PhpStorm扫描了文件,则应该可以执行以下任何操作:

  • 自动扩展类和函数名称
  • 自动添加use语句(有关更多信息,请参见PhpStorm help

另请参见DynamicReturnType插件和other plugins recommended for TYPO3 core development。核心附带的DynamicReturnType插件以及文件dynamicReturnTypeMeta.json应该为PhpStorm提供足够的信息,例如,用makeInstance实例化的类的返回类型。