Skip to content

値型

Psalmでは、型で値を指定することもできます。

null

これは null 値で、世界の破壊者です。慎重に使用してください。Psalmでは、?Foo と書くことで null|Foo を意味することができます。

true, false

truefalse の使用もPHPDocと互換性があります。

"some_string", 4, 3.14

Psalmでは、型にリテラル値を指定することもできます。例:@return "good"|"bad"

通常のクラス定数

Psalmでは、型にクラス定数を含めることができます。例:@return Foo::GOOD|Foo::BAD。また、明示的なクラス文字列を指定することもできます。例:Foo::class|Bar::class

特定のクラスの、またはそのクラスを拡張したクラス文字列のみをパラメータとして受け入れるように指定したい場合は、@param class-string<Foo> $foo_class というアノテーションを使用できます。そのクラス文字列だけを受け入れるようにしたい場合は、Foo::class というアノテーションを使用できます:

<?php
class A {}
class AChild extends A {}
class B {}
class BChild extends B {}

/** 
 * @param class-string<A>|class-string<B> $s 
 */
function foo(string $s) : void {}

/** 
 * @param A::class|B::class $s 
 */
function bar(string $s) : void {}

foo(A::class); // 動作します
foo(AChild::class); // 動作します
foo(B::class); // 動作します
foo(BChild::class); // 動作します

bar(A::class); // 動作します
bar(AChild::class); // 失敗します
bar(B::class); // 動作します
bar(BChild::class); // 失敗します

ユーザーノート