/** * Load from library * @param string $a_path * @return bool True if load success else return false */ public static final function library($a_path) { $i = ZLoader::getInstance(); if (key_exists($a_path, $i->m_library)) { return true; } $i->m_library[$a_path] = true; $exp_path = explode('.', $a_path); $classname = array_pop($exp_path); $i->emit(new ZEvent($i, 'onLibrary', $classname)); if ($exp_path[0] == 'zoombi') { array_shift($exp_path); $new_path = array(); foreach ($exp_path as $p) { array_push($new_path, ucwords($p)); } $exp_path = $new_path; $new_path = is_array($exp_path) ? implode(Zoombi::DS, $exp_path) : $exp_path; $filename = Zoombi::fromFrameworkDir($new_path . Zoombi::DS . strtolower($classname) . '.php'); $code = null; if (file_exists($filename)) { $code = (include_once $filename); } if ($code != -1) { $i->emit(new ZEvent($i, 'onLibrarySucess', $classname)); return true; } } else { $new_path = implode(Zoombi::DS, $exp_path); $filename = Zoombi::fromFrameworkDir($new_path . Zoombi::DS . $classname . '.php'); $code = $this->loadFile($filename); if ($code) { if (class_exists($classname)) { $i->emit(new ZEvent($i, 'onLibrarySucess', $classname)); } return true; } } $i->emit(new ZEvent($i, 'onLibraryFailed', $classname)); return false; }
public function __get($a_property) { switch ($a_property) { default: break; case 'application': return Zoombi::getApplication(); case 'database': return Zoombi::getApplication()->getDatabase(); case 'registry': return Zoombi::getApplication()->getRegistry(); case 'language': return Zoombi::getApplication()->getLanguage(); case 'router': return Zoombi::getApplication()->getRouter(); case 'load': return ZLoader::getInstance(); case 'name': return $this->getName(); } return $this->getProperty($a_property); }
public static final function &factory($a_name) { ZLoader::getInstance()->factory($a_name); }
/** * Boot framework * @param string $a_application * @return bool */ public static final function boot($a_application) { $i = Zoombi::getInstance(); $path = realpath((string) $a_application); if (file_exists($path) == false) { throw new Exception("Application path not exist: '{$path}'"); return false; } if (is_dir($path) == false) { throw new Exception("Application directory not exist: '{$path}'"); return false; } if (is_readable($path) == false) { throw new Exception("Application directory not accessable: '{$path}'"); return false; } $i->m_application_base = $path; require_once ZOOMBI_BASE_PATH . self::DS . 'Class' . self::DS . 'registry.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'config.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Class' . self::DS . 'route.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'router.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'controller.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Controllers' . self::DS . 'dummycontroller.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'action.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'model.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'view.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Error' . self::DS . 'profiler.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Net' . self::DS . 'headers.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Event' . self::DS . 'dispatcher.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'plugin.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'pluginmanager.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'acl.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'module.php'; require_once ZOOMBI_BASE_PATH . self::DS . 'Base' . self::DS . 'application.php'; spl_autoload_register(array(ZLoader::getInstance(), 'autoload')); return true; }
* @var bool */ define('ZBOOT', true); define('ZOOMBI_BASE_PATH', realpath(dirname(__FILE__))); /** * Include base classes */ require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Class' . DIRECTORY_SEPARATOR . 'instance.php'; require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Base' . DIRECTORY_SEPARATOR . 'node.php'; require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Base' . DIRECTORY_SEPARATOR . 'object.php'; require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Base' . DIRECTORY_SEPARATOR . 'interface.php'; require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Error' . DIRECTORY_SEPARATOR . 'exception.php'; require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Event' . DIRECTORY_SEPARATOR . 'event.php'; require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Event' . DIRECTORY_SEPARATOR . 'dispatcher.php'; require_once ZOOMBI_BASE_PATH . DIRECTORY_SEPARATOR . 'Base' . DIRECTORY_SEPARATOR . 'loader.php'; spl_autoload_register(array(ZLoader::getInstance(), 'autoload')); if (!function_exists('get_called_class')) { function get_called_class() { $bt = debug_backtrace(); $l = 0; do { $l++; $lines = file($bt[$l]['file']); $callerLine = $lines[$bt[$l]['line'] - 1]; preg_match('/([a-zA-Z0-9\\_]+)::' . $bt[$l]['function'] . '/', $callerLine, $matches); if ($matches[1] == 'self') { $line = $bt[$l]['line'] - 1; while ($line > 0 && strpos($lines[$line], 'class') === false) { $line--; }