1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap; 4*04fd306cSNickeau 5*04fd306cSNickeau 6*04fd306cSNickeauclass TreeSystem 7*04fd306cSNickeau{ 8*04fd306cSNickeau 9*04fd306cSNickeau public static function getDescendantCount(TreeNode $treeNode): int 10*04fd306cSNickeau { 11*04fd306cSNickeau $counterClass = new class { 12*04fd306cSNickeau 13*04fd306cSNickeau private int $counter = -1; 14*04fd306cSNickeau 15*04fd306cSNickeau public function increment() 16*04fd306cSNickeau { 17*04fd306cSNickeau $this->counter++; 18*04fd306cSNickeau } 19*04fd306cSNickeau 20*04fd306cSNickeau public function getCounter(): int 21*04fd306cSNickeau { 22*04fd306cSNickeau return $this->counter; 23*04fd306cSNickeau } 24*04fd306cSNickeau 25*04fd306cSNickeau }; 26*04fd306cSNickeau TreeVisit::visit($treeNode, array($counterClass, 'increment')); 27*04fd306cSNickeau return $counterClass->getCounter(); 28*04fd306cSNickeau } 29*04fd306cSNickeau 30*04fd306cSNickeau public static function print(TreeNode $tree) 31*04fd306cSNickeau { 32*04fd306cSNickeau $printRecursively = function (TreeNode $treeNode, int $level) { 33*04fd306cSNickeau for ($i = 0; $i < $level - 1; $i++) { 34*04fd306cSNickeau echo " "; 35*04fd306cSNickeau } 36*04fd306cSNickeau echo "- $treeNode\n"; 37*04fd306cSNickeau }; 38*04fd306cSNickeau TreeVisit::visit($tree, $printRecursively); 39*04fd306cSNickeau } 40*04fd306cSNickeau 41*04fd306cSNickeau 42*04fd306cSNickeau} 43*04fd306cSNickeau 44