如何閱讀函數(shù)的定義(函數(shù)原型)

文檔中的每個(gè)函數(shù)都只是快速參考,學(xué)會(huì)如何閱讀和理解文檔將使得 PHP 的使用更加簡(jiǎn)單。和依賴賴于復(fù)制/粘貼范例比起來(lái),用戶一定更希望知道如何閱讀函數(shù)的定義(函數(shù)原型):

注意: 先決條件,對(duì)變量類型的基本理解

盡管 PHP 是一種松散類型語(yǔ)言,但變量類型有重要的意義,需要理解它的基本知識(shí)。

函數(shù)定義告訴我們函數(shù)返回什么類型的值,讓我們用函數(shù) strlen() 的定義作為第一個(gè)范例:

strlen

(PHP 4, PHP 5, PHP 7)
strlen -- Get string length

說(shuō)明
strlen ( string $string ) : int

返回給定的字符串 string 的長(zhǎng)度。

對(duì)函數(shù)定義的解釋
組成部分 說(shuō)明
strlen 函數(shù)名稱。
(PHP 4, PHP 5, PHP 7) strlen() 在 PHP 4, PHP 5 和 PHP 7 的所有版本中都存在。
( string $string ) 第一個(gè)(本例中是唯一的)參數(shù),在該函數(shù)中名為 string,且類型為 string
int 該函數(shù)返回的值的類型,這里為整型 int(即以數(shù)字來(lái)衡量的字符串的長(zhǎng)度)。

可以將以上函數(shù)的定義寫(xiě)成一般形式:

          函數(shù)名          ( 參數(shù)類型           參數(shù)名 )        返回類型
      function name    ( parameter type   parameter name ) : returned type

很多函數(shù)都有多個(gè)變量,例如 in_array()。其函數(shù)原型如下:

      in_array ( mixed $needle, array $haystack , bool $strict = false ) : bool

這是什么意思?in_array() 返回一個(gè)“布爾”值,成功(如果在參數(shù) haystack 中能找到參數(shù) needle)則返回 true, 或者在失敗時(shí)返回 false(如果在參數(shù) haystack 中找不到參數(shù) needle)。第一個(gè)參數(shù)被命名為 needle 且其類型不定,因此我們將其稱為“混和”類型。該混和類型的 needle 參數(shù)(我們要找的對(duì)象)可以是一個(gè)標(biāo)量的值(字符串、整數(shù)、或者浮點(diǎn)數(shù)),或者一個(gè)數(shù)組。haystack(我們尋找的范圍)是第二個(gè)參數(shù)。第三個(gè)可選參數(shù)被命名為 strict。所有的可選參數(shù)都用 [ 方括號(hào) ] 括起來(lái)。手冊(cè)表明 strict 參數(shù)默認(rèn)值為布爾值 false。需要了解函數(shù)工作的細(xì)節(jié),請(qǐng)參閱手冊(cè)中和該函數(shù)相關(guān)的頁(yè)面。

函數(shù)參數(shù)前的 & 符號(hào)使參數(shù)以 引用 方式傳遞,如下所見(jiàn):

       preg_match ( string $pattern , string $subject [, array &$matches
      [, int $flags = 0 [, int $offset = 0 ]]] ) : int

在這個(gè)例子中,我們可以看到,第三個(gè)可選參數(shù) &$matches 會(huì)意引用方式傳遞。

有的函數(shù)包含更復(fù)雜的 PHP 版本信息。我們拿 html_entity_decode() 舉例:

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

它意味著該函數(shù)只可在 PHP 4.3.0 及以后發(fā)布的版本中使用。