带有空格分隔参数的PHP函数


PHP function with space-separated arguments

在PHP中,当函数的参数列表包含用空格分隔的类和变量名时,这意味着什么?

例如,在Batchbook API示例PHP库中,有以下函数声明:

public function postPerson(Batchblue_Service_BatchBook_Person $person)

其中Batchblue_Service_Batchbook_Person是一个类,$Person是该类的实例。

这就是类型提示。这意味着你说那个参数必须是那个类的一个实例或它的一个派生类。

PHP 5引入了类型提示。函数现在可以强制参数为对象(通过在函数原型中指定类的名称)或数组(自PHP 5.1以来)。但是,如果NULL用作默认参数值,则它将被允许作为以后任何调用的参数。

PHP页面中关于函数参数的注释提供了一些提示。

报价:

您可以为函数使用(非常)有限的签名,指定允许的参数类型。

例如:

public function Right( My_Class $a, array $b )

告诉第一个参数必须由My_Class的对象,第二个是数组。My_Class意味着您还可以传递类的对象扩展My_Class或实现(如果My_Class是抽象类)My_Class。如果你需要My_Class,你需要最后,或者添加一些代码来检查$a到底是什么。

还要注意,(不幸的是)"array"是您唯一的内置类型可以在签名中使用。任何其他类型,即:

public function Wrong( string $a, boolean $b )

将导致错误,因为PHP会抱怨$a不是类字符串的对象($b不是类boolean的对象)。

因此,如果你需要知道$a是字符串还是$b布尔,你需要写函数体中的一些代码,即如果检测到则抛出异常类型不匹配(如果可行,也可以尝试强制转换)。