首页 > 解决方案 > PhpStorm:类型提示链式方法

问题描述

在下面的代码片段中,我得到类型提示$contactInfo[0],然后再次显示$order

我想要同样的 with logger,它是一个类型的对象\Monolog\Logger,作为 的成员访问\psr\container\ContainerInterface

我正在使用 PhpStorm 警告我Field 'logger' not found in Psr\Container\ContainerInterface

/**
 * @param Order $order
 * @param ContactInfo[] $contactInfo
 * @var Monolog\Logger $this->container->logger
 */
private function buildCreateOrderJSON(Order $order, $contactInfo)
{
    try {
        $currentDate = new DateTime();
    } catch (Exception $e) {
        $this->container->logger->addInfo('Some exception', $e->getMessage());
        return;
    }
    $lastName = $contactInfo[0]->getLastName();
    $order->getInvoiceNumber();
}

标签: phpphpstorm

解决方案


正如评论中提到的 LazyOne ,您不能键入提示 3 级实体。

您可以做些什么来保留方法名称重构是您可以将您的类元素分配给一个变量,然后输入提示:

/** @var $logger \Monolog\Logger */
$logger = $this->container->logger;
$logger->addInfo('Some exception', $e->getMessage());

推荐阅读