我正在寫一些小幫手類來處理樹木。基本上,我有一個節點和一個代表樹的特殊根節點。我想保持它的通用性和簡單性。這是部分代碼:受保護的構造函數是否被認爲是良好的實踐?
<?php
class Tree extends TreeNode{
public function addById($node_id, $parent_id, $generic_content){
if($parent = $this->findNodeById($parent_id)){
$parent->addChildById($node_id, $generic_content);
}
}
}
class TreeNode{
public function __construct($node_id, $parent_id, $generic_content){
// ...
}
protected function addChildById($node_id, $generic_content){
$this->children[] = new TreeNode($this->node_id, $node_id, $generic_content);
}
}
$Categories = new Tree;
$Categories->addById(1, NULL, $foo);
$Categories->addById(2, NULL, $bar);
$Categories->addById(3, 1, $gee);
?>
我的問題:
- 它是明智的強制通過
TreeNode::addById()
創建TreeNode
實例? - 如果是這樣,將
TreeNode::__construct()
聲明爲private/protected是否是好習慣?