Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
 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);
 }
Exemple #3
0
 public static final function &factory($a_name)
 {
     ZLoader::getInstance()->factory($a_name);
 }
Exemple #4
0
 /**
  * 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;
 }
Exemple #5
0
 * @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--;
                }