PHPDoc & Psalm - 注释一个“类数组”

Posted

技术标签:

【中文标题】PHPDoc & Psalm - 注释一个“类数组”【英文标题】:PHPDoc & Psalm - Annotate an "array of classes" 【发布时间】: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 的错误?

【问题讨论】:

【参考方案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

【讨论】:

以上是关于PHPDoc & Psalm - 注释一个“类数组”的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式去除 phpdoc 多行注释

PHPDOC文档工具注释风格整理

PHP注释规范(PHPDOC)总结

PHP如何优雅地在PHP里写注释 | PHP的注释PHPDoc

PHP如何优雅地在PHP里写注释 | PHP的注释PHPDoc

是否有用于注释 C# 代码的标准(如 phpdoc 或 python 的文档字符串)?