<?php
namespace PHPFUI\Traits;
trait Walkable
{
public function walk(string $method, mixed $argument = null) : static
{
foreach ($this->items as $item)
{
if (\is_object($item))
{
if (\method_exists($item, $method))
{
if (null !== $argument)
{
\call_user_func([$item, $method], $argument);
}
else
{
\call_user_func([$item, $method]);
}
}
if ($item instanceof \PHPFUI\Base || $item instanceof \PHPFUI\Container || $item instanceof \PHPFUI\Menu)
{
$item->walk($method, $argument);
}
}
}
return $this;
}
}