用于在闭包中抛出异常的 PHPDoc
PHPDoc for throwing exceptions in closures
是否有任何聪明的方法来记录闭包抛出异常?我正在使用 PhpStorm,我想摆脱恼人的警告,即给定块中永远不会抛出异常。
方法 createFromState()
抛出 AbstractEntityRepositoryException
异常,我想让 IDE 知道。
/**
* Closure used to create an object from repository.
* The default implementation is using the method {@link EntityRepositoryInterface::createFromState()}
*
* @var Closure|null
* @throws AbstractEntityRepositoryException
*/
private ?Closure $create = null;
public function __construct(ControllerInteface $controller, string $id, ?Closure $create = null)
{
parent::__construct($controller, $id);
if ($create === null) {
$this->create = static function (EntityRepositoryInterface $repository, FormModelInterface $model): Entity {
return $repository->createFromState($model->toState());
};
}
else {
$this->create = $create;
}
}
/**
* @param FormModelInterface $model
* @return Entity
* @throws CreateActionException
*/
public function saveModel(FormModelInterface $model): Entity
{
try {
$create = $this->create;
return $create($this->repository, $model);
} catch (AbstractEntityRepositoryException $e) {
throw new CreateActionException($e->getMessage(), $e->getErrors());
}
}
似乎 PHP Storm 还没有正确支持该注释。
这个问题 https://youtrack.jetbrains.com/issue/WI-52095 正是我的情况。
感谢您的帮助!
我已将我的案例添加到上述工单中。
是否有任何聪明的方法来记录闭包抛出异常?我正在使用 PhpStorm,我想摆脱恼人的警告,即给定块中永远不会抛出异常。
方法 createFromState()
抛出 AbstractEntityRepositoryException
异常,我想让 IDE 知道。
/**
* Closure used to create an object from repository.
* The default implementation is using the method {@link EntityRepositoryInterface::createFromState()}
*
* @var Closure|null
* @throws AbstractEntityRepositoryException
*/
private ?Closure $create = null;
public function __construct(ControllerInteface $controller, string $id, ?Closure $create = null)
{
parent::__construct($controller, $id);
if ($create === null) {
$this->create = static function (EntityRepositoryInterface $repository, FormModelInterface $model): Entity {
return $repository->createFromState($model->toState());
};
}
else {
$this->create = $create;
}
}
/**
* @param FormModelInterface $model
* @return Entity
* @throws CreateActionException
*/
public function saveModel(FormModelInterface $model): Entity
{
try {
$create = $this->create;
return $create($this->repository, $model);
} catch (AbstractEntityRepositoryException $e) {
throw new CreateActionException($e->getMessage(), $e->getErrors());
}
}
似乎 PHP Storm 还没有正确支持该注释。 这个问题 https://youtrack.jetbrains.com/issue/WI-52095 正是我的情况。 感谢您的帮助! 我已将我的案例添加到上述工单中。