变量

类型检查

一些关于变量和类型的文档提到 PHP 不使用静态类型。这是正确的,但是当涉及到函数/方法参数和返回值时,PHP 会进行一些类型检查(特别是使用 PHP 7)。

你可以通过在 PHP 7 中使用类型提示来强制执行参数和返回值类型检查,如下所示:

<?php

/**
 * Juggle numbers and return true if juggling was
 * a great success.
 */
function numberJuggling(int $a, int $b) : bool
{
    $sum = $a + $b;

    return $sum % 2 === 0;
}

注: PHP 的 gettype() 的整数和布尔值分别是 integerboolean。但是对于这些变量的类型提示,你需要使用 intbool。否则 PHP 不会给你一个语法错误,但它会期望传递 integerboolean

上面的示例抛出一个错误,如果非数字值被赋予 $a$b 参数,并且该函数返回的内容不是 truefalse。上面的例子是松散的,因为你可以给 $a$b 一个浮动值。如果你希望强制执行严格类型,这意味着你只能输入整数而不是浮点数,请将以下内容添加到 PHP 文件的最开头:

<?php
declare('strict_types=1');

在 PHP 7 之前,函数和方法允许对以下类型进行类型提示:

  • callable(可调用的函数或方法)
  • array(任何类型的数组,也可以包含其他数组)
  • 接口(完全限定类名称或 FQDN)
  • 类(FQDN)

另请参阅: 输出变量的值