📜  什么是 php 中的类型提示(1)

📅  最后修改于: 2023-12-03 15:06:24.955000             🧑  作者: Mango

什么是 PHP 中的类型提示

在 PHP 中,类型提示是指在函数或方法声明时指定参数的类型。这使得在函数或方法体中使用参数时可以确保其类型正确,从而避免出现一些常见的错误。

基本用法

使用类型提示非常简单,只需在函数或方法的参数前面加上类型名称。例如,如果要指定一个参数为整数类型,则可以按照以下方式编写代码:

function calculate(int $a, int $b) {
    return $a + $b;
}

echo calculate(2, 3); // 输出 5
echo calculate('2', '3'); // 会抛出 TypeError 异常

在上面的例子中,calculate 函数带有两个整数类型的参数 $a 和 $b。这意味着如果我们在调用函数时传递一个非整数类型的参数,则会抛出 TypeError 异常。

参数可以为 null

如果参数可以为 null,则可以在类型名称前面加上一个问号来指定可为空。例如:

function greet(?string $name) {
    if (!is_null($name)) {
        echo "Hello, {$name}!";
    } else {
        echo "Hello, world!";
    }
}

greet(null); // 输出 "Hello, world!"
greet('Jack'); // 输出 "Hello, Jack!"

在上面的例子中,greet 函数的参数 $name 是一个可为空的字符串类型。当我们向函数传递 null 时,函数将输出 "Hello, world!",否则将输出 "Hello, {$name}!",其中 $name 是传递给函数的字符串。

返回类型

除了可以指定参数类型之外,还可以指定函数或方法的返回类型。这可以确保函数或方法返回正确类型的值。例如:

function add(int $a, int $b): int {
    return $a + $b;
}

$total = add(2, 3);
echo gettype($total); // 输出 "integer"

在上面的例子中,add 函数返回两个整数的和,我们在函数定义中使用 ": int" 来指定函数的返回类型为整数类型。因此,如果我们将函数的结果存储到一个变量中并调用 gettype 函数,将输出 "integer"。

其他类型

除了整数和字符串之外,PHP 还支持其他基本类型的类型提示,如浮点数、布尔值和数组。此外,我们还可以使用类型提示来指定自定义类的参数和返回类型。

class User {
    private string $name;
    private int $age;
    
    public function __construct(string $name, int $age) {
        $this->name = $name;
        $this->age = $age;
    }
    
    public function getDetails(): array {
        return ['name' => $this->name, 'age' => $this->age];
    }
}

function createUser(string $name, int $age): User {
    return new User($name, $age);
}

$user = createUser('Jack', 30);
var_dump($user->getDetails()); // 输出 ['name' => 'Jack', 'age' => 30]

在上面的示例中,我们定义了一个 User 类,该类包含一个字符串类型的名字和一个整数类型的年龄。然后,我们定义了一个函数 createUser,该函数带有一个字符串类型的 $name 和一个整数类型的 $age 参数,并返回一个 User 类型的对象。在创建 User 对象后,我们使用 getDetails 方法获取对象的详细信息。

总结

在 PHP 中,类型提示是一种强大的功能,可以帮助我们编写更具可读性和可维护性的代码。通过指定函数或方法的参数和返回类型,可以确保我们的代码不会受到类型不匹配的错误的影响。