Exemplo n.º 1
0
 public static function i()
 {
     $class = __CLASS__;
     if (is_null(self::$_instance)) {
         self::$_instance = new $class();
     }
     return self::$_instance;
 }
Exemplo n.º 2
0
if(!class_exists('Eden_Route_Method')){class Eden_Route_Method extends Eden_Class{protected static $_instance=NULL;protected $_route=array();public static function i(){$class=__CLASS__;if(is_null(self::$_instance)){self::$_instance=new $class();}return self::$_instance;}public function call($class,$method,array $args=array()){Eden_Route_Error::i()->argument(1,'string','object')->argument(2,'string');$instance=NULL;if(is_object($class)){$instance=$class;$class=get_class($class);}$classRoute=Eden_Route_Class::i();$isClassRoute=$classRoute->isRoute($class);$isMethodRoute=$this->isRoute($class,$method);list($class,$method)=$this->getRoute($class,$method);if(!is_object($class) && !class_exists($class)){Eden_Route_Error::i()->setMessage(Eden_Route_Error::CLASS_NOT_EXISTS)->addVariable($class)->addVariable($method)->trigger();}if(!$isClassRoute && !$isMethodRoute && !method_exists($class,$method)){Eden_Route_Error::i()->setMessage(Eden_Route_Error::METHOD_NOT_EXISTS)->addVariable($class)->addVariable($method)->trigger();}if($isClassRoute || !$instance){$instance=$classRoute->call($class);}return call_user_func_array(array(&$instance,$method),$args);}public function callStatic($class,$method,array $args=array()){Eden_Route_Error::i()->argument(1,'string','object')->argument(2,'string');if(is_object($class)){$class=get_class($class);}$isClassRoute=Eden_Route_Class::i()->isRoute($class);$isMethodRoute=$this->isRoute($class,$method);list($class,$method)=$this->getRoute($class,$method);if(!is_object($class) && !class_exists($class)){Eden_Route_Error::i()->setMessage(Eden_Route_Error::CLASS_NOT_EXISTS)->addVariable($class)->addVariable($method)->trigger();}if(!$isClassRoute && !$isMethodRoute && !method_exists($class,$method)){Eden_Route_Error::i()->setMessage(Eden_Route_Error::METHOD_NOT_EXISTS)->addVariable($class)->addVariable($method)->trigger();}if(is_object($class)){$class=get_class($class);}return call_user_func_array($class.'::'.$method,$args);}public function getRoute($class,$method){Eden_Route_Error::i()->argument(1,'string')->argument(2,'string');if($this->isRoute(NULL,$method)){return $this->_route[NULL][strtolower($method)];}$class=Eden_Route_Class::i()->getRoute($class);if($this->isRoute($class,$method)){return $this->_route[strtolower($class)][strtolower($method)];}return array($class,$method);}public function getRoutes(){return $this->_route;}public function isRoute($class,$method){if(is_string($class)){$class=strtolower($class);}return isset($this->_route[$class][strtolower($method)]);}public function release($class,$method){if($this->isRoute($class,$method)){unset($this->_route[strtolower($class)][strtolower($method)]);}return $this;}public function route($source,$alias,$class,$method=NULL){Eden_Route_Error::i()->argument(1,'string','object','null')->argument(2,'string')->argument(3,'string','object')->argument(4,'string');if(is_object($source)){$source=get_class($source);}if(!is_string($method)){$method=$alias;}$route=Eden_Route_Class::i();if(!is_null($source)){$source=$route->getRoute($source);$source=strtolower($source);}if(is_string($class)){$class=$route->getRoute($class);}$this->_route[$source][strtolower($alias)]=array($class,$method);return $this;}}}