返回類型聲明在PHP中的使用

2023-02-28 14:34 更新

在使用 PHP7 的時(shí)候,您會(huì)發(fā)現(xiàn)在 PHP7 中包含了一個(gè)新的功能,即返回類型聲明。返回類型聲明指定一個(gè)函數(shù)應(yīng)該返回的值的類型,可用的類型與參數(shù)聲明中可用的類型相同??梢月暶饕韵骂愋偷姆祷仡愋停?

  • 整數(shù)型int
  • 浮點(diǎn)型float
  • 布爾型bool
  • 字符串型string
  • 接口類型interfaces
  • 數(shù)組型array
  • 可調(diào)用的callable

有效返回類型-實(shí)例

實(shí)例1::

<?php
   declare(strict_types = 1);
   function returnIntValue(int $value): int {
      return $value;
   }
   print(returnIntValue(5));
?>

它產(chǎn)生以下瀏覽器輸出:

5

實(shí)例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]));
?>

它產(chǎn)生以下瀏覽器輸出:

Array
(
[0] => 6
[1] => 15
[2] => 24
)

返回類型無效-實(shí)例

<?php
   declare(strict_types = 1);
   function returnIntValue(int $value): int {
      return $value + 1.0;
   }
   print(returnIntValue(5));
?>

以上程序由于采用了嚴(yán)格模式,返回值必須是 int,但是計(jì)算結(jié)果是float,所以會(huì)報(bào)錯(cuò),執(zhí)行輸出結(jié)果為:

它產(chǎn)生以下瀏覽器輸出:

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 函數(shù)-實(shí)例

一個(gè)新的返回值類型void被引入。 返回值聲明為 void 類型的方法要么干脆省去 return 語句,要么使用一個(gè)空的 return 語句。 對(duì)于 void 函數(shù)來說,NULL 不是一個(gè)合法的返回值。

返回的類型還有 void,定義返回類型為 void 的函數(shù)不能有返回值,即使返回 null 也不行。

void 函數(shù)可以省去 return 語句,或者使用一個(gè)空的 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);

以上實(shí)例輸出結(jié)果:

null
int(2)
int(1)

PHP is_callable() 函數(shù)

is_callable() 函數(shù)用于檢測(cè)函數(shù)在當(dāng)前環(huán)境中是否可調(diào)用。

is_callable() 函數(shù)驗(yàn)證變量的內(nèi)容能否作為函數(shù)調(diào)用。 這可以檢查包含有效函數(shù)名的變量,或者一個(gè)數(shù)組,包含了正確編碼的對(duì)象以及函數(shù)名。

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

語法

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

參數(shù)說明:

  • $name:要檢查的回調(diào)函數(shù)。
  • $syntax_only:如果設(shè)置為 TRUE,這個(gè)函數(shù)僅僅驗(yàn)證 name 可能是函數(shù)或方法。 它僅僅拒絕非字符,或者未包含能用于回調(diào)函數(shù)的有效結(jié)構(gòu)。有效的應(yīng)該包含兩個(gè)元素,第一個(gè)是一個(gè)對(duì)象或者字符,第二個(gè)元素是個(gè)字符。
  • $callable_name:接受"可調(diào)用的名稱"。

返回值

如果 name 可調(diào)用則返回 TRUE,否則返回 FALSE。。

實(shí)例


<?php
//  檢測(cè)變量是否為可調(diào)用的函數(shù) 
 
function someFunction() 
{
}
 
$functionVariable = 'someFunction';
 
var_dump(is_callable($functionVariable, false, $callable_name));  // bool(true)
 
echo $callable_name, "\n";  // someFunction
 
//
//  數(shù)組中包含方法
//
 
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
 
?>

輸出結(jié)果為:

bool(true)
someFunction
bool(true)
someClass::someMethod


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)