[关闭]
@Chiang 2020-01-07T14:14:06.000000Z 字数 699 阅读 575

返回值类型申明

PHP


  • PHP 7 增加了对返回值类型声明的支持。 就如 类型声明一样, 返回值类型声明将指定该函数返回值的类型。同样,返回值类型声明也与 有效类型 中可用的参数类型声明一致。
  • 严格类型 也会影响返回值类型声明。在默认的弱模式中,如果返回值与返回值的类型不一致,则会被强制转换为返回值声明的类型。在强模式中,返回值的类型必须正确,否则将会抛出一个TypeError异常.
  • Note:当覆盖一个父类方法时,子类方法的返回值类型声明必须与父类一致。如果父类方法没有定义返回类型,那么子类方法可以定义任意的返回值类型声明。
  1. <?php
  2. function sum($a, $b): float {
  3. return $a + $b;
  4. }
  5. // Note that a float will be returned.
  6. var_dump(sum(1, 2));//float(3)
  7. ?>
  1. <?php
  2. declare(strict_types=1);
  3. function sum($a, $b): int {
  4. return $a + $b;
  5. }
  6. var_dump(sum(1, 2));
  7. var_dump(sum(1, 2.5));
  8. ?>
  1. int(3)
  2. Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5
  3. Stack trace:
  4. #0 -(9): sum(1, 2.5)
  5. #1 {main}
  6. thrown in - on line 5
  1. <?php
  2. class C {}
  3. function getC(): C {
  4. return new C;
  5. }
  6. var_dump(getC());
  7. ?>
  1. object(C)#1 (0) {
  2. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注