codecamp

返回类型声明在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:

<?php
   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。。

实例


<?php
//  检测变量是否为可调用的函数 
 
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)
someFunction
bool(true)
someClass::someMethod


PHP7功能之标量类型声明
PHP7空合并运算符如何使用
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }