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

是否可以在php中的类中创建类类型的对象,php,class,oop,object,php-7,Php,Class,Oop,Object,Php 7,我的学校项目需要这样的东西 class Node { Node $obj; } 如何在PHP中实现这一点?不,这是不可能的。但您可以键入方法的参数和返回类型: class Node { private $obj = null; public function setNode(Node $obj) { $this->obj = $obj; } public function getNode():Node { retu

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

class Node {
  Node $obj;   
}

如何在PHP中实现这一点?

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

class Node {
    private $obj = null;
    public function setNode(Node $obj) {
        $this->obj = $obj;
    }
    public function getNode():Node {
        return $this->obj;
    }
}
请注意,如果
$obj
null
,则如果使用
getNode()
,将出现错误。因此,您可以使用
:?节点
来允许空返回

    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
是同一个对象(
对象(节点)#1
)。

您的意思是定义一个类型属性,还是只在其中使用类自身类型的实例?在其中使用类自身类型的实例。@MetinKadık我已经更新了答案。