PHP - 在接口函数声明中使用bareword

时间:2013-05-05 13:25:13

标签: php interface bareword

查看PHP关于接口的文档,具体在这里:PHP: Object Interfaces - Manual。以下代码作为工作示例给出。有人可以解释一下,作为函数签名的一部分被声明为“Baz”的裸字是什么?

<?php
interface a
{
    public function foo();
}

interface b extends a
{
    public function baz(Baz $baz);
}

// This will work
class c implements b
{
    public function foo()
    {
    }

    public function baz(Baz $baz)
    {
    }
}

3 个答案:

答案 0 :(得分:4)

它被称为type hinting

baz()方法期望第一个参数$bazBaz类型的对象。对象的类型来自它构建的类,或来自它实现的接口。

答案 1 :(得分:2)

在类c中,函数baz()需要一个参数,该参数是类Baz的对象。 $baz只是对象名称。它在baz()的功能中使用。

它被称为Type Hinting

  

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

     

如果将类或接口指定为类型提示,则指定其所有子项   或允许实施。

     

类型提示不能与标量类型(如int或string)一起使用。   也不允许特征。

答案 2 :(得分:0)

根据documentation,它被称为类型提示

Baz是班级的名字

因此baz方法期望第一个参数$ baz成为一个对象