PHPStan 类型别名

问题描述 投票:0回答:1

我有一个 PHP 项目,它是一个树/节点库。它有几个通用对象,所有这些对象都是并行工作的 - 它们要么是有序的,要么是无序的,具体取决于节点的子节点是否需要使用整数索引进行排序。

节点的子节点在集合中表示。每个节点都有一个其“有效负载”的通用类型。因此,在我的代码库中,有大量对象在 php 文档中被键入(例如):

TreenodeAbstract<PayloadType, NodeType, TreeType, CollectionType>

需要大量打字(双关语)。

我觉得我应该能够在 PHPStan 中使用全局别名来表示(在上面的示例中)“Treenode”的通用资格,但是 PHPStan 中的类型别名文档也很薄弱。有什么想法吗?

php generics type-alias phpstan
1个回答
0
投票

PHPStan 支持 localglobal 类型别名。

在您的情况下,可能会在

phpstan.neon
配置文件中声明全局类型别名,如下所示:

parameters:
    typeAliases:
        AbstractTreeNode: 'TreenodeAbstract<PayloadType, NodeType, TreeType, CollectionType>'

然后,您可以在代码中使用

AbstractTreeNode
类型别名:

/**
 * @param AbstractTreeNode $node
 */

请注意,您可能需要在类型别名声明中提供类型的完全限定名称以避免歧义。

© www.soinside.com 2019 - 2024. All rights reserved.