2015-03-13 55 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本身给出的描述: