为什么让参数列表如此混乱?

时间:2014-05-11 12:02:46

标签: php

我正在查看mail()的PHP文档。我理解如何阅读它,但是我要将它展示给一个完整的初学者,我让它反思他的格式有多糟糕。

  

bool mail(string $ to,string $ subject,string $ message [,string $ additional_headers [,string $ additional_parameters]])

首先,我理解将[]舍入可选参数,但为什么将第二个可选参数括在第一个方括号中?

其次,为什么要费心呢?每个参数的标题告诉您它是否可选。

第三,对于一种类型没有多大的语言,主要定义中的每个参数的类型是否有用?

我对第一点最感兴趣。

想象一下,在我的背景下说#34;用PHP发送电子邮件真的很容易!让它只是Google吧#34;然后我们查看文档,并且已经被括号和关键字稍微混淆的学习者必须阅读并理解括号和关键字的完整其他语法。

我意识到文档不是学习材料,但在我看来,它们可以更容易阅读,同时保持适合专家。我注意到其他语言也使用这种语法 - 他们有没有被注意到的好理由?

1 个答案:

答案 0 :(得分:0)

  

首先,我理解将[]圆形可选参数,但为什么将第二个可选参数括在第一个方括号中?

我不是100%确定PHP的内部结构,但在静态类型语言中,表示法是因为它们分离了函数的重载。因此,当您使用一个可选参数进行呼叫时,您实际上调用的功能与使用两个可选参数不同。

它还表明可选参数不以任何方式链接,您可以选择包含一个或可能包含另一个(取决于函数定义)或两者。有时,一对可选参数可以在逻辑上绑定在一起,这样如果您包含一个可选参数,则应该包括两者,并且在这种表示法中将它们分组在括号中。

  

其次,为什么要费心呢?每个参数的标题都会告诉您它是否可选。

以函数签名表示法传达此信息。其余文档中有大量信息,但必需/可选是签名本身的一部分,并且可以包含在一个简短的符号中。

  

第三,对于一种类型不多的语言,主要定义中每个参数的类型是否有用?

所以你知道它希望得到什么。也许这并不是一个大问题,其中所有的函数参数都是字符串,但是当它们需要成为其他东西时它们可能很重要。您可以将数字作为字符串传递,它可以正常使用,但如果您将字符串作为数字传递,它就不那么好了。或者,如果您在数据库查询的情况下将字符串作为资源传递,例如。 PHP不是静态类型的,但数据类型仍然很重要。

  

我意识到文档不是学习材料

当然它们是作为参考而不是教程。格式不同,信息丰富。不过,参考资料总是如此。字典,百科全书等都有自己的符号,这些符号多年来一直被定义为在详细描述非结构化描述之前快速传达标题中的结构化信息。