php 限制返回类型,返回类型声明在PHP中的使用

在使用 PHP7 的时候,您会发现在 PHP7 中包含了一个新的功能,即返回类型声明。返回类型声明指定一个函数应该返回的值的类型,可用的类型与参数声明中可用的类型相同。可以声明以下类型的返回类型:

整数型int

浮点型float

布尔型bool

字符串型string

接口类型interfaces

数组型array

可调用的callable

有效返回类型-实例

实例1::<?php

declare(strict_types = 1);

function returnIntValue(int $value): int {

return $value;

}

print(returnIntValue(5));

?>

它产生以下浏览器输出:5

实例2:

function arraysSum(array ...$arrays): array{

return array_map(function(array $array): int {

return array_sum($array);

}, $arrays);

}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

?>

它产生以下浏览器输出:Array

(

[0] => 6

[1] => 15

[2] => 24

)

返回类型无效-实例<?php

declare(strict_types = 1);

function returnIntValue(int $value): int {

return $value + 1.0;

}

print(returnIntValue(5));

?>

以上程序由于采用了严格模式,返回值必须是 int,但是计算结果是float,所以会报错,执行输出结果为:

它产生以下浏览器输出:PHP Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned in /soft/node/run.php:4 Stack trace: #0 /soft/node/run.php(6): returnIntValue(5) #1 {main} thrown in /soft/node/run.php on line 4

void 函数-实例

一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,NULL 不是一个合法的返回值。

返回的类型还有 void,定义返回类型为 void 的函数不能有返回值,即使返回 null 也不行。

void 函数可以省去 return 语句,或者使用一个空的 return 语句。function swap(&$left, &$right) : void

{

if ($left === $right) {

return;

}

$tmp = $left;

$left = $right;

$right = $tmp;

}

$a = 1;

$b = 2;

var_dump(swap($a, $b), $a, $b);

以上实例输出结果:null

int(2)

int(1)

PHP is_callable() 函数

is_callable() 函数用于检测函数在当前环境中是否可调用。

is_callable() 函数验证变量的内容能否作为函数调用。 这可以检查包含有效函数名的变量,或者一个数组,包含了正确编码的对象以及函数名。

PHP 版本要求:PHP 4 >= 4.0.6, PHP 5, PHP 7

语法bool is_callable ( callable $name [, bool $syntax_only = false [, string &$callable_name ]] )

参数说明:

$name:要检查的回调函数。

$syntax_only:如果设置为 TRUE,这个函数仅仅验证 name 可能是函数或方法。 它仅仅拒绝非字符,或者未包含能用于回调函数的有效结构。有效的应该包含两个元素,第一个是一个对象或者字符,第二个元素是个字符。

$callable_name:接受"可调用的名称"。

返回值

如果 name 可调用则返回 TRUE,否则返回 FALSE。。

实例

// 检测变量是否为可调用的函数

function someFunction()

{

}

$functionVariable = 'someFunction';

var_dump(is_callable($functionVariable, false, $callable_name)); // bool(true)

echo $callable_name, "\n"; // someFunction

//

// 数组中包含方法

//

class someClass {

function someMethod()

{

}

}

$anObject = new someClass();

$methodVariable = array($anObject, 'someMethod');

var_dump(is_callable($methodVariable, true, $callable_name)); // bool(true)

echo $callable_name, "\n"; // someClass::someMethod

?>

输出结果为:

bool(true)someFunctionbool(true)someClass::someMethod

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值