在PHP中,我们如何像JAVA一样将字段定义为某个类的实例


In PHP, how can we define a field as a certian class's instance like JAVA?

那么我就可以在IDE中使用自动补全了。

Java中,我们定义了一个像

这样的类
class AppleTree{
    Apple apple;
}
class Apple {
    Color getColor() {}
}

所以当我输入apple.时,IDE可以显示一个包含getColor()方法的列表。

PHP中我们可以定义一个像

这样的类
class AppleTree
{
    public $apple;
}
class Apple
{
     public function getColor() {}
}

如果你的目标是自动完成,你可以使用DocBlocks。

class AppleTree
{
    /**
     * @var Apple
     */
    public $apple;
}
class Apple
{
    /**
     * @return Color
     */
    public function getColor() {}
}

然而,如果你想实现限制设置任何东西的行为,除了给定类的实例,你必须使用类型提示,例如

class AppleTree
{
    /**
     * @var Apple
     */
    protected $apple;
    public function setApple(Apple $apple)
    {
        $this->apple = $apple;
    }
    /**
     * @return Apple
     */
    public function getApple()
    {
        return $this->apple;
    }
}