J'écris quelques petites classes d'aide pour gérer les arbres. Fondamentalement, j'ai un noeud et un noeud racine spécial qui représente l'arbre. Je veux le garder générique et simple. Cela fait partie du code:Les constructeurs protégés sont-ils considérés comme de bonnes pratiques?
<?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);
?>
Mes questions:
- Est-il raisonnable de forcer
TreeNode
instances à créer parTreeNode::addById()
? - Si c'est le cas, serait-il bon de déclarer
TreeNode::__construct()
comme étant privé/protégé?