poseidon / type
缺失的 PHP 静态分析类型合约
这个包的规范仓库似乎已不存在,因此该包已被冻结。
0.2.0
2022-10-28 11:55 UTC
Requires
- php: ^8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.12
- vimeo/psalm: ^5@beta
README
PHP 静态分析类型系统(Psalm, PHPStan)类型的价值对象集合。
所有 Type
的实现都应被视为密封的。在用户空间中不应实现 Type
接口。如果需要一个复杂复合类型的别名,请实现 Alias
或创建构建器/函数。
此库永远不会有任何依赖项。一旦完整且稳定,可能会被提议作为 PSR。
安装
composer require poseidon/type
命名
表示原生 PHP 类型的值对象不能以它们的名称命名,因为像 Int
、Strind
等单词已被 保留。可能会引入后缀来解决此问题。由于 Type
后缀过于冗长,因此我们选择了 T
:int -> IntT
,float -> FloatT
。尽管像 non-empty-list
这样的类型可以安全地命名为 NonEmptyList
,但我们目前决定为所有类型遵循 T-约定。
支持的类型
标量类型
-
bool
-
int
-
positive-int
-
float
-
non-empty-string
-
string
-
literal-string
-
array-key
-
numeric-string
-
class-string
-
class-string<T>
-
interface-string
-
trait-string
-
enum-string
-
callable-string
-
numeric
-
scalar
字面量
-
null
-
true
-
false
-
-10
-
-0.34
-
'foo'
数组类型
-
list<TValue>
-
non-empty-list<TValue>
-
array<TKey, TValue>
-
non-empty-array<TKey, TValue>
-
array{foo: int, bar?: string}
,array{int, string}
-
callable-array
对象类型
-
object
-
Foo\MyClass<T>
-
Generator<TKey, TValue, TSend, TReturn>
-
static
可调用类型
-
callable(Foo, Bar=): Baz
-
\Closure(Foo, Bar=): Baz
常量
-
Foo\Bar::MY_SCALAR_CONST
-
key-of<Foo\Bar::ARRAY_CONST>
-
value-of<Foo\Bar::ARRAY_CONST>
-
key-of<T>
,T[TKey]
(示例)
其他类型
-
?T
-
never
-
void
-
mixed
-
iterable<TKey, TValue>
-
resource
- 联合类型
- 交集类型
- 模板类型