PHPの型宣言は、関数の引数、戻り値、クラスのプロパティに対して、実行時に型アサーションを行います。
関数では、戻り値の型にvoidを指定すると、その関数が値を返さないことを示せます。
宣言した型は、関数が適切な型の戻り値を返していることを実行時に確認する役割も果たします。
<?php
class Driver
{
private int $serial_number;
public function setSerialNumber(int $number): void
{
$this->serial_number = $number;
}
public function getSerialNumber(): int
{
return $this->serial_number;
}
}
$driver = new Driver();
$driver->setSerialNumber("Version 1b"); // This will throw a TypeError
関数の引数、戻り値、クラスのプロパティが複数の型を取りうる場合は、共用体型を宣言できます。
<?php
class IdentityCard
{
private int|null $id = null;
public function assign(int|float $id): void
{
$this->id = intval($id);
}
}
$card = new IdentityCard();
$card->assign(5.0);
mixed型コードを書いていると、型を特定できないことがあります。
PHP 8.0からは、mixedという抜け道になる型が用意されています。
mixedは、object|resource|array|string|float|int|bool|nullという共用体型と同じ意味です。
しばらく市役所で働くうちに、日々の仕事を効率化するツールをいくつか作ってきました。たとえば、書類の記入を楽にするものです。
そこへ新しい同僚が加わることになり、作ったツールが必ずしも分かりやすいとは限らないことに気づきました。 職場には変わった習慣がたくさんあります。たとえば、書類は必ず大文字で記入する、項目を空欄のままにしない、といったことです。
そこで最初のステップとして、新しい同僚がすぐに使い始められるように、PHPの型宣言を追加することにしました。
Addressクラスの型を宣言する宣言されているAddressクラスの各プロパティに、プロパティの型宣言を追加してください。
各クラスプロパティは文字列として宣言します。
Formクラスのblanksメソッドに、仮引数の型宣言と戻り値の型宣言を追加してください。
このメソッドは、整数の長さを受け取り、空欄の行を表す文字列を返します。
Formクラスのlettersメソッドに、仮引数の型宣言と戻り値の型宣言を追加してください。
このメソッドは、単語を表す文字列を受け取り、文字の配列を返します。
FormクラスのcheckLengthメソッドに、仮引数の型宣言と戻り値の型宣言を追加してください。
このメソッドは、文字列の単語と整数の最大長を受け取り、trueまたはfalseを返します。
FormクラスのformatAddressメソッドに、先ほど更新したAddressクラスを利用した仮引数の型宣言と、戻り値の型宣言を追加してください。
このメソッドは、Addressを受け取り、整形された文字列を返します。