我的学校项目需要这样的东西。
class Node {
Node $obj;
}
我如何在PHP中执行此操作?
答案 0 :(得分:0)
不,这是不可能的。但是您可以键入方法的参数和返回类型:
class Node {
private $obj = null;
public function setNode(Node $obj) {
$this->obj = $obj;
}
public function getNode():Node {
return $this->obj;
}
}
请注意,如果$obj
为null
,则使用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
)。