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()直接呼び出しへのアクセスを防止したいと考えています。クラスからのみアクセスするNode必要があります。Graph

ありがとう。

4

1 に答える 1

3

いいえ、できません。渡された引数がグラフでない場合、ノードコンストラクターで例外をスローすることで構成される「ハック」を使用できます

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 に答える