PHP类属性类型提示

时间:2015-01-02 13:57:07

标签: php

我只是发现PHP5支持type hinting的函数参数。是否可以对类属性使用此类型提示,如下所示:

private FooClass $fo;

甚至可以在函数内创建像这样的新对象:

FooClass $ff = new FooClass();

3 个答案:

答案 0 :(得分:3)

不,不可能像那样强制执行属性类型。但是,如果您使用像PHPStorm这样的体面IDE,您可以在PHPDoc评论中提出类型提示:

class Foo
    {
    /**
     * @var Bar
     */
    private $barObject;
    }

然后,当您尝试使用错误的类型分配或修改其值时,它将检查并发出警告。

至于强制变量类型 - PHP是一种松散类型的语言,所以不,这是不可能的。再次,使用体面的IDE,您可以自己使用PHPDoc评论:

/**
 * @var $bar Bar
 */
$bar = somethingThatReturnsBar();

但就是这样。

答案 1 :(得分:2)

您可以使用以下代码确保函数参数是特定类的实例...

$fo = new FooClass();

function myFunction (FooClass $fo){
    // Your Code Here
}

如果$ fo参数不是FooClass的实例,则会触发错误。

答案 2 :(得分:2)

不,虽然如果你觉得你真的需要,你可以看看Hack(http://hacklang.org/)。

但是,您可以通过在参数中使用类型提示来控制私有变量的设置:

class MyClass {
    private $foo;

    public function setFoo(FooClass $foo) {
        $this->foo = $foo;
    }
}