Первоначально написано и доступно на этой ссылке
function _ago($tm,$rcs = 0) {
$cur_tm = time(); $dif = $cur_tm-$tm;
$pds = array('second','minute','hour','day','week','month','year','decade');
$lngh = array(1,60,3600,86400,604800,2630880,31570560,315705600);
for($v = sizeof($lngh)-1; ($v >= 0)&&(($no = $dif/$lngh[$v])<=1); $v--); if($v < 0) $v = 0; $_tm = $cur_tm-($dif%$lngh[$v]);
$no = floor($no); if($no <> 1) $pds[$v] .='s'; $x=sprintf("%d %s ",$no,$pds[$v]);
if(($rcs == 1)&&($v >= 1)&&(($cur_tm-$_tm) > 0)) $x .= time_ago($_tm);
return $x;
}
Требуется значение time (), и оно сообщит вам, сколько секунд / минут / часов / дней / лет / десятилетия назад.
При копировании в файл класса объекта маршрута обнаруживается это
#File: vendor/symfony/routing/Route.php
public function setOptions(array $options)
{
$this->options = array(
'compiler_class' => 'Symfony\\Component\\Routing\\RouteCompiler',
);
return $this->addOptions($options);
}
То есть - Symfony устанавливает поле compiler_class
в массиве опций, и именно этот массив опций является ключом конфигурации options:
связано с. Затем Symfony использует эту опцию класса компилятора в том же классе
#File: vendor/symfony/routing/Route.php
public function compile()
{
if (null !== $this->compiled) {
return $this->compiled;
}
$class = $this->getOption('compiler_class');
return $this->compiled = $class::compile($this);
}
Так что - вероятно, не то, что 99% разработчиков Symfony понадобится / захочет использовать, но оно все еще там.