2015-03-13 54 views
1

例如,當我看文檔system功能: 它說:php.net上的函數簽名是什麼意思?

絃線系統(字符串$命令[摘要& $ return_var])

這是什麼意思? 謝謝

+0

他們的提示,以什麼類型理由應該是。 '$ command是一個字符串,$ return_var是一個整數'。 – 2015-03-13 17:47:05

+0

這種格式很常見。但是如果你沒有C/Java/..背景,這裏是:1. string函數返回的類型2.函數的名稱然後參數的字符串類型和參數的名稱。如果參數在'['和']'中,則它是可選的。參數的名字只對簽名 – kero 2015-03-13 17:47:23

+0

下面的描述很重要,謝謝,'&'是否有意義? – 2015-03-13 17:50:43

回答

1

所以對於部分:

string system (string $command [ , int & $return_var ] ) 
1  2  3 4  5  6 7 8 9 10   11 12 

按順序排列:

  1. string - 返回類型
  2. 系統 - 命令名
  3. ( - 的函數的自變量
  4. 字符串開始 - 第一個參數的類型
  5. $命令 - 第一個參數的名稱(這只是一個暗示,這不是」牛逼影響您如何調用該函數)
  6. [ - 開始的可選參數
  7. , - 這是表明你用逗號
  8. INT獨立參數 - 第一個可選參數的類型
  9. & - 指示第一個可選參數將通過引用傳遞(函數可以修改傳遞的變量**)
  10. $ return_var - 第一個可選參數的名稱
  11. ] - 可選參數端
  12. ) - 的爭論結束功能

它暗示,什麼可能需要調用該函數。所以語法,以下是確定:

$return_type = 1; 
system("String!", $return_type); 
//$return_type could have changed 

system("String!", $return_type); 

system("String!"); 

但下面不:

system(); 

system($var_that_wont_cast_to_string); 
上通

** PHP文件引用:http://php.net/manual/en/language.references.pass.php

+0

真棒回答,謝謝。 1的東西,第9項。你的意思是...將通過引用傳遞(並且* outer * scope變量可以在被調用函數中修改)?謝謝 – 2015-03-13 18:07:28

+0

編輯答案 - 它在我的頭腦裏是有道理的:p。我認爲最好不要在此引用傳遞的意思,所以只是借用PHP的廣泛處理。 – button 2015-03-13 18:13:24

1

表示函數名稱是system(),這些是這個函數的參數和類型。

在這種情況下,string $命令是強制性的(並且您需要傳遞有效的String值)。當你有括號時,如(& $ return_var)是一個可選參數(&表示該變量將作爲參考傳遞,因此返回值將位於傳遞給該函數的變量上)。

-2

stringint的上市告訴你它期望什麼類型的價值。它預計system類型爲string,依此類推。如果你把一個intsystem,你會得到一個錯誤

+0

'string system'是返回類型,函數名稱。你會如何「把int放入」返回值?另外,php在大多數地方是鬆散類型的,如果你傳入錯誤的類型,就會發生隱式轉換。這些類型確實告訴你如何在函數中處理它。 – 2015-03-13 17:51:24

1

在這裏看到php.net本身給出的描述: