/** * @return string */ public function render() { if (!$this->layout) { CLog::getInstance()->_error('[' . __CLASS__ . '] Layout file not selected!'); mfe::stop(0xe3); } ob_start(function ($layout) { return preg_replace_callback('#\\{([a-z0-9\\-_\\#]*?)\\}#Ssi', function ($match) { return isset($this->{substr($match[0], 1, -1)}) ? $this->{substr($match[0], 1, -1)} : $match[0]; }, $layout); }); if (!$this->loadLayout()) { CLog::getInstance()->_error('[' . __CLASS__ . '] Not found layout file: ' . $this->layout . $this->layout_extension . ' in directories: ' . PHP_EOL . implode('; ' . PHP_EOL, mfe::app()->loader->getRealPaths('@engine.@layout.', true))); mfe::stop(0xe3); } $this->result = ob_get_contents(); ob_clean(); return $this->result; }
/** * Start engine * * Here the engine is registered and prepares for work all components * * @return bool * @throws CException */ public final function startEngine() { //mfe::dependence('CDisplay'); //TODO:: Where from phar archive register specific paths if (self::option('MFE_PHAR_INIT')) { } $RUN = array_reverse(explode('/', $_SERVER['SCRIPT_NAME']))[0]; $REAL_PATH = dirname(realpath($RUN)); self::registerAlias('@engine', __DIR__); if (__DIR__ !== $REAL_PATH && file_exists($REAL_PATH . '/') && is_dir($REAL_PATH . '/')) { self::registerAlias('@engine', $REAL_PATH . '/'); } self::registerAlias('@libs', 'libs'); self::registerAlias('@core', 'core'); //Load main libs & core files by map file! //if (self::loadMapFile('@libs.libs')) self::loadMap('libs'); //TODO:: Это устарело, удалить if (self::loadMapFile('@core.core')) { self::loadMap('core'); } try { return self::trigger('engine.start'); } catch (CException $e) { mfe::stop(0xe1); } return false; }
/** * @param $error * @return bool|null */ public static function errorHandler($error) { $error[0] = $error[0] & call_user_func('error_reporting'); if (!$error[0]) { return false; } $error[0] = isset(self::$_ERROR_CODES[$error[0]]) ? self::$_ERROR_CODES[$error[0]] : 'Unknown Error'; if (is_null(self::$trace)) { if (function_exists('debug_backtrace')) { $backtraceArray = $backtrace = []; foreach (call_user_func('debug_backtrace') as $value) { if (isset($value['class'])) { $backtrace['class'] = $value['class']; } else { $backtrace['class'] = null; } if (isset($value['type'])) { $backtrace['type'] = $value['type']; } else { $backtrace['type'] = null; } $backtrace['function'] = $value['function']; if (isset($value['file'])) { $backtrace['file'] = $value['file']; } else { $backtrace['file'] = null; } if (isset($value['line'])) { $backtrace['line'] = $value['line']; } else { $backtrace['line'] = null; } $backtraceArray[] = $backtrace; } $error[] = array_reverse($backtraceArray); } } else { $error[] = self::$trace; } self::$errors[] = $error; if ($error[0] === E_EXCEPTION) { mfe::stop(0xe4); } return $error[0] === E_FATAL || $error[0] === E_ERROR || $error[0] === E_COMPILE_ERROR ? mfe::stop(0xe0) : null; }