我在使用 PHPStan 时遇到以下问题。我有两个接口(
ClienInterface
,ClientFactoryInterface
)和两个实现它们的类(ConcreteClient
,ConcreteApiClientFactory
)。 ConcreteClient
具有 ClienInterface
中未定义的方法。
当我尝试在代码中使用此方法时,出现 PHPStan 错误:
Call to an undefined method ClienInterface::mySpecificFunction().
我尝试过实现这一点,但没有成功: https://phpstan.org/blog/generics-by-examples# Couple-relevant-classes-together
我在 PHPStan 游乐场上的示例: https://phpstan.org/r/4b3da235-fa57-4d86-b414-9dd7fbffe1f2
PHPStan 需要有关具体类型的信息。该信息可以通过几种方式提供:
/** @var ConcreteClient $client */
放在变量之前。if ($client instanceof ConcreteClient) {
$client->mySpecificFunction();
}