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

时间:2012-01-17 17:49:06

标签: php function

当函数的参数列表包含由空格分隔的类和变量名时,PHP中的含义是什么?

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

public function postPerson(Batchblue_Service_BatchBook_Person $person)

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

2 个答案:

答案 0 :(得分:5)

那是type hinting。这意味着你要说那个参数必须是该类的一个实例或它的一个后代类。

  

PHP 5引入了类型提示。函数现在能够强制参数为对象(通过在函数原型中指定类的名称)或数组(从PHP 5.1开始)。但是,如果将NULL用作默认参数值,则允许将其作为后续调用的参数。

答案 1 :(得分:0)

comment中的PHP's page on function arguments提供了一些提示。

引用:

  

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

     

例如:

     

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

     

告诉第一个参数必须是My_Class的对象,第二个是数组。   My_Class意味着你也可以传递类的对象   扩展My_Class或实现(如果My_Class是抽象类)   我的课。如果您需要完全My_Class,您需要制作它   最后,或者添加一些代码来检查$ a真的。

     

另请注意,(不幸的是)“数组”是您唯一的内置类型   可以在签名中使用。任何其他类型,即:

     

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

     

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

     

因此,如果你需要知道$ a是字符串还是$ b bool,你需要写   函数体中的一些代码,如果检测到则抛出异常   类型不匹配(或者你可以尝试施放,如果它可行)。