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);
写代码时,我们可能无法指定类型。
从 PHP 8.0 开始,PHP 提供了一种名为mixed的“逃生舱”类型。
mixed等价于object|resource|array|string|float|int|bool|null的联合类型。
你已经在市政办公室工作了一段时间,也开发了一套工具来提高日常工作的效率,比如填写表格。
现在,一位新同事要加入你们,你意识到自己做的工具可能不够一目了然。 你们办公室有很多奇怪的习惯,比如填表时总要用大写字母,还不能让字段留空。
作为第一步,你决定加上 PHP 类型声明,好让新同事能迅速上手,开始使用你的工具。
为 Address 类中声明的每个属性添加属性类型声明。
每个类属性都应声明为字符串。
为 Form 类中的 blanks 方法添加形参类型声明和返回类型声明。
该方法应接收一个整数长度,并返回空白行的字符串表示。
为 Form 类中的 letters 方法添加形参类型声明和返回类型声明。
该方法应接收一个表示单词的字符串,并返回一个由字母组成的数组。
为 Form 类中的 checkLength 方法添加形参类型声明和返回类型声明。
该方法应接收一个字符串单词和一个整数最大长度,并返回 true 或 false 值。
为 Form 类中的 formatAddress 方法添加形参类型声明和返回类型声明,其中形参类型要用到前面更新过的 Address 类。
该方法应接收一个 Address,并返回一个格式化后的字符串。