是否可以在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我已经更新了答案。