【问题标题】:PHPDoc & Psalm - Annotate an "array of classes"PHPDoc & Psalm - 注释一个“类数组”
【发布时间】:2022-01-22 00:22:17
【问题描述】:

在我的代码中,我创建了一个这样的 EventFactory:

private array $events = [
    'post_created' => PostCreatedEvent::class,
    'exercise_executed' => ExerciseExecutedEvent::class,
];

public function fromTopicAndData(string $topic, array $data) : Event
{
    if (! array_key_exists($topic, $this->events)) {
        throw new Exception('Invalid Topic');
    }

    $event = ($this->events)[$topic];
    return $event::createFromData($data);
}

PostCreatedEventExerciseExecutedEvent 都扩展了抽象类 Event

你能告诉我是否有办法对数组进行注释,以免收到来自 Psalm 的错误?

【问题讨论】:

    标签: php phpdoc psalm-php


    【解决方案1】:

    假设Event 类声明createFromData() 方法,下面的文档块应该可以解决问题:

    /** @var array<string, class-string<Event>> */
    private array $events = [
        'post_created' => PostCreatedEvent::class,
        'exercise_executed' => ExerciseExecutedEvent::class,
    ];
    

    现场演示:https://psalm.dev/r/da11fc8d8c

    【讨论】:

      猜你喜欢
      • 2010-10-05
      • 2011-06-21
      • 1970-01-01
      • 2011-03-24
      • 2011-06-22
      • 2016-11-20
      • 1970-01-01
      • 2011-03-18
      • 2014-04-11
      相关资源
      最近更新 更多