代码之家  ›  专栏  ›  技术社区  ›  Metin Kadık

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

  •  -2
  • Metin Kadık  · 技术社区  · 6 年前

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

    class Node {
      Node $obj;   
    }
    

    如何在PHP中实现这一点?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Syscall - leaving SO... Juhzuri    6 年前

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

    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 )。