型制約は PHP クラスのメソッドと関数で実装できますが、パラメーターで指定できるのはクラス、配列、インターフェイス、呼び出し可能の 4 つの型のみです。 NULL。PHP はスカラー型または他の型を制約できません。
以下の例:
コードをコピーします コードは次のとおりです:
クラステスト
{
パブリック関数 test_array(array $arr)
{
print_r($arr);
}
パブリック関数 test_class(Test1 $test1 = null)
{
print_r($test1);
}
パブリック関数 test_callable(callable $callback, $data)
{
call_user_func($callback, $data);
}
パブリック関数 test_interface(Traversable $iterator)
{
print_r(get_class($iterator));
}
パブリック関数 test_class_with_null(Test1 $test1 = NULL)
{
}
}
クラス Test1{}
$test = 新しいテスト();
//関数呼び出しのパラメータが定義されたパラメータの型と一致しない場合、キャッチ可能な致命的なエラーがスローされます。
$test->test_array(array(1));
$test->test_class(new Test1());
$test->test_callable('print_r', 1);
$test->test_interface(new ArrayObject(array()));
$test->test_class_with_null();
では、スカラー型を制限するにはどうすればよいでしょうか?
SPL Types 拡張機能は、整数、浮動小数点数、ブール値、列挙型、文字列型の制約を実装するために PECL 拡張ライブラリで提供されています。
コードをコピーします コードは次のとおりです:
$int = 新しい SplInt (94);
試してみてください{
$int = '楽しみのために文字列値をキャストしてみてください' ;
} catch (UnexpectedValueException $uve) {
echo $uve -> PHP_EOL ;
}
エコー $int ;
/*
実行結果:
整数ではない値
94
*/
SPL タイプは柔軟性とパフォーマンスをある程度低下させるため、実際のプロジェクトではよく考えてください。