提问人:Александр Рязанов 提问时间:10/17/2023 更新时间:10/17/2023 访问量:24
如何在phpstan中使用异常模板
How to use exception template in phpstan
问:
如何使用例外模板,例如: 有一些类抛出异常
/**
* @implements FooInterface<FooException>
*/
class Foo implements FooInterface
{
/**
* @throws FooException
*/
public function exec(): void
{
throw new FooException();
}
}
实现异常作为模板的接口
/**
* @template E of Exception
*/
interface FooInterface
{
/**
* @throws E
*/
public function exec(): void;
}
而且我不能使用这个模板。 我收到错误
方法 Test\FooWrapper::exec() 抛出 Exception 的选中异常 E,但 PHPDoc @throws 标记中缺少该异常。 在下一个代码中
/**
* @template E of Exception
* @implements FooInterface<E>
*/
readonly class FooWrapper implements FooInterface
{
/**
* @param FooInterface<E> $foo
*/
public function __construct(
private FooInterface $foo
) {}
/**
* @throws E
*/
public function exec(): void
{
$this->foo->exec();
}
}
如果指定@throws E,为什么会缺少异常? 如何向phpstan解释异常取决于模板?
答: 暂无答案
评论