public function __call($method, $arguments) { $method = first_char_remove($method); $source = $arguments[0]; /* @var $template Smarty_Internal_Template */ $template = $arguments[1]; $tplPath = $template->template_resource; //PsProfiler::inst(__CLASS__)->start($method); $result = $this->{$method}($source); //PsProfiler::inst(__CLASS__)->stop(); $call = ++$this->CALLS[$method]; $callttl = ++$this->CALLTTL; $callInfo = pad_right("[{$callttl}-{$call}].", 10, ' '); PsLogger::inst(__CLASS__)->info("{} {} filter called for template {}.", $callInfo, ucfirst($method), $tplPath); return $result; }
function getNiceBackTrace($bTrace = false) { $sTrace = ''; $aBackTrace = debug_backtrace(); $iMin = 0; if ($bTrace) { $iMax = count($aBackTrace) - 1; $iMax = count($aBackTrace); } else { $iMax = 3; } for ($iIndex = $iMin; $iIndex < $iMax; ++$iIndex) { if ($bTrace) { $sTrace .= "\n"; } $sTrace .= $iIndex . sprintf('%s#%4d:%s() ', pad_right($aBackTrace[$iIndex]['file'], 30), $aBackTrace[$iIndex]['line'], pad_right($aBackTrace[$iIndex]['function'], 15)); } return $sTrace; }
/** * Метод вызывается перед вызовом метода имплементации * * @param type $filterType * @param Smarty_Internal_Template $template */ private function onBeforeCall($filterType, Smarty_Internal_Template $template) { if (PsLogger::isEnabled()) { PsLogger::inst(__CLASS__)->info("{} {}.{}({})", pad_right(++$this->CALLTTL . '.', 3, ' '), get_called_class(), $filterType, $template->template_resource); } }
protected function pad_right($string, $key) { if (defined('STRICT_TYPES') && CAMEL_CASE == '1') { return (string) self::parameters(['string' => DT::STRING, 'key' => DT::STRING])->call(__FUNCTION__)->with($string, $key)->returning(DT::STRING); } else { return (string) pad_right($string, $key); } }