<?php
class Node implements Countable
{
private $nodes = [];
public function __construct(array $nodes = [])
{
$this->nodes = $nodes;
}
public function getCount()
{
return count($this->nodes);
}
public function getCountRecursive()
{
$count = 0;
foreach ($this->nodes as $node) {
$count += ($node->getCountRecursive() + 1);
}
return $count;
}
public function count($mode = COUNT_NORMAL){
if ($mode === COUNT_RECURSIVE) {
return $this->getCountRecursive();
}
return $this->getCount();
}
}
$node = new Node([
new Node([
new Node([
new Node([
new Node(),
new Node(),
new Node(),
]),
new Node(),
new Node(),
]),
new Node(),
new Node(),
]),
new Node(),
]);
var_dump(count($node), count($node, COUNT_RECURSIVE));
Deprecated: Return type of Node::count($mode = COUNT_NORMAL) should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /in/NDfOA on line 23
Fatal error: Uncaught Error: Undefined constant " COUNT_NORMAL" in /in/NDfOA:23
Stack trace:
#0 /in/NDfOA(48): Node->count()
#1 {main}
thrown in /in/NDfOA on line 23
Process exited with code 255.
Output for 8.0.0 - 8.0.30
Fatal error: Uncaught Error: Undefined constant " COUNT_NORMAL" in /in/NDfOA:23
Stack trace:
#0 /in/NDfOA(48): Node->count()
#1 {main}
thrown in /in/NDfOA on line 23
Process exited with code 255.
Warning: Use of undefined constant COUNT_NORMAL - assumed ' COUNT_NORMAL' (this will throw an Error in a future version of PHP) in /in/NDfOA on line 23
Warning: Use of undefined constant COUNT_NORMAL - assumed ' COUNT_NORMAL' (this will throw an Error in a future version of PHP) in /in/NDfOA on line 23
int(2)
int(2)
Notice: Use of undefined constant COUNT_NORMAL - assumed ' COUNT_NORMAL' in /in/NDfOA on line 23
Notice: Use of undefined constant COUNT_NORMAL - assumed ' COUNT_NORMAL' in /in/NDfOA on line 23
int(2)
int(2)