2

PHP中有没有办法让一个类只允许由另一个类实例化?例如:

<?php 
    class Graph {
        private $nodes;

        public function __construct() {
            $this->nodes = array();
        }

        public function add_node() {
            $this->nodes[] = new Node();
        }
    }

    class Node {
        public function __construct() {
        }
    }
?>

在我的示例中,我想阻止new Node()直接调用。只能NodeGraph班级访问。

谢谢。

4

1 回答 1

3

不,你不能这样做。如果传递给它的参数不是图形,您可以使用“hack”,其中包括在 Node 构造函数中引发异常

class Node {
    public function __construct() {
        if(func_get_num_args() < 1 && !(func_get_args(0)instanceof Graph)){
           throw BadCallException('You can\'t call Node outside a Graph');
        } 
    }
}
于 2012-08-26T05:57:07.297 回答