是否可以在php中的类中创建类类型的对象

时间:2018-03-10 23:28:21

标签: php class oop object php-7

我的学校项目需要这样的东西。

class Node {
  Node $obj;   
}

我如何在PHP中执行此操作?

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。但是您可以键入方法的参数和返回类型:

class Node {
    private $obj = null;
    public function setNode(Node $obj) {
        $this->obj = $obj;
    }
    public function getNode():Node {
        return $this->obj;
    }
}

请注意,如果$objnull,则使用getNode()时会出现错误。所以你可以使用:?Node来允许null返回。

    public function getNode():?Node { // OK if $this->obj is NULL
        return $this->obj;
    }

修改

要使用当前对象的实例,可以使用$this

class Node {
    public $obj = null;
    public function createInstance() {
        $this->obj = $this;
    }
}

$node = new Node();
$node->createInstance();

var_dump($node);
var_dump($node->obj);

输出:

object(Node)#1 (1) {
  ["obj"]=>
  *RECURSION*
}
object(Node)#1 (1) {
  ["obj"]=>
  *RECURSION*
}

正如您所看到的,$node$node->obj是同一个对象(object(Node)#1)。