php限制返回类型,返回类型声明在PHP中的使⽤
在使⽤ PHP7 的时候,您会发现在 PHP7 中包含了⼀个新的功能,即返回类型声明。返回类型声明指定⼀个函数应该返回的值的类型,可⽤的类型与参数声明中可⽤的类型相同。可以声明以下类型的返回类型:
整数型int
浮点型float
布尔型bool
字符串型string
接⼝类型interfaces
数组型array
可调⽤的callable
有效返回类型-实例php8兼容php7吗
实例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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论