当函数的参数列表包含由空格分隔的类和变量名时,PHP中的含义是什么?
例如,在Batchbook API sample PHP library中,有以下函数声明:
public function postPerson(Batchblue_Service_BatchBook_Person $person)
其中Batchblue_Service_Batchbook_Person是一个类,$ person是该类的实例。
答案 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,你需要写 函数体中的一些代码,如果检测到则抛出异常 类型不匹配(或者你可以尝试施放,如果它可行)。