通过函数原型,可以标准地描述函数接受的参数和函数的返回值。函数原型在本书和PHP在线手册中都有所使用。一旦你掌握了阅读函数原型的艺术,你应该仅仅通过阅读函数原型就能够大概了解函数的使用方法。然而,你不必为了了解函数原型是如何工作的而阅读本书——所有的函数使用方法都有文字描述,列出函数原型仅仅是为了方便。
因为函数原型在本书的每个函数中都有所使用,所以你在继续阅读之前应该了解。现在先不用担心每个函数的作用是什么,因为在本书后面都有所讲解。我直接从PHP手册中拿出对应的函数原型,因此,你可以很方便地从手册中找到。下面是一个基本的函数strtoupper()
的原型:
string strtoupper(string string)
意思是函数将一个string
作为参数传入,并返回一个string
。上面用了string string
是因为PHP手册为了描述每个参数做什么,给每个参数命了名。这里告诉我们strtoupper()
接受一个叫做string
的字符串(string)类型的参数——虽然我认为这不是最好的命名,但是最起码这是有意义的。这个函数也返回一个字符串——手册像大部分类似C的语言一样,将返回的类型放在了函数名的前面。
当函数使用引用作为参数时,这个参数将通过一个&
符号传递给原型。这并不意味着你在函数调用时必须像原型那样加上&
,这只是告诉你这个参数是一个引用。
下面来看一下sha1()
的原型:
string sha1(string source[, bool raw_output])
正如上面所说的,sha1()
返回一个字符串,将一个字符串作为它的第一个参数,将一个布尔值作为它的第二个参数。然而,布尔值在方括号[]
当中——意思是“这是一个可选的参数”。
可选参数有时候让人有些迷惑,比如mysql_connect()
的完全定义如下:
resource mysql_connect([string server[, string username[, string password[, bool new_link[, int client_flags]]]]])
mysql_connect()
的每个参数都是可选的,如果你没有提供参数的值的话,PHP将给每个参数赋上对应的默认值。原型当中包含两种特殊的数据类型:数字(number)和混合(mixed)。数字可以是浮点型或整型,混合意味着接受或返回两种或两种以上的数据类型。
例如pow()
的定义如下:
number pow(number base, number exp)
接受任意数字,也返回数字。而序列化serialize()
的定义如下:
string serialize(mixed value)
当你用serialize()
的时候,你就会发现它对对象和类都使用,这也就是为什么这个函数的参数是混合类型的。还有一种数据类型是空类型(void),意思是“没有返回值”或“没有参数”。
函数原型的最后一个管理是使用...
,意思是“参数的数目不定”。例如,isset
函数的原型是:
bool isset(mixed var[, mixed var[, mixed ...]])
最少接受一个变量作为参数,因为...
,所以可以接受多个参数。