Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once( 'Config.php' );
- require_once( 'Controllers.php' );
- require_once( 'Database.php' );
- require_once( 'Linker.php' );
- class Zyphr{
- private $oDb = null;
- private $oLastController = null;
- static $oApp = null;
- static $szControllerName = '';
- static $szMethodName ='';
- public static function Load(){
- if( Zyphr::$oApp == null ){
- Zyphr::$oApp = new Zyphr();
- }
- Zyphr::$oApp->StartApplication();
- }
- private function GenException( $szException ){
- throw new Excepton( $szException );
- }
- private function ControllerClassName( $szController ){
- return ucfirst( strtolower( $szController ) )."Controller";
- }
- private function LoadController( $szController, $szMethod, $pParams ){
- $szClassName = $this->ControllerClassName( $szController );
- $this->oLastController = new $szClassName;
- /******
- Checar número de parâmetros
- ****/
- Zyphr::$szControllerName = $szController;
- Zyphr::$szMethodName = $szMethod;
- call_user_func( array( $this->oLastController, $szMethod ), $pParams );
- }
- private function ControllerExists( $szController ){
- if( !class_exists( $this->ControllerClassName( $szController ) ) ){
- return false;
- }
- return true;
- }
- private function ControllerActionExists( $szController, $szAction ){
- try{
- $pReflection = new ReflectionMethod( $this->ControllerClassName( $szController ), $szAction );
- return true;
- }catch( Exception $e ){
- return false;
- }
- }
- private function ParseArgs(){
- $config = $GLOBALS['config'];
- $szReference = isset( $_GET['Reference'] ) ? $_GET['Reference'] : '';
- $pActions = explode( '/', $szReference );
- if( in_array( '', $pActions ) ){
- unset( $pActions[array_search( '', $pActions )] );
- }
- $nParamsLen = sizeof( $pActions );
- if( $nParamsLen == 0 ){
- $szController = $config['default_controller'];
- $szMethod = $config['default_method'];
- $pParams = array();
- if( !$this->ControllerExists( $szController ) ){
- throw new Exception( "Não foi possível encontrar a classe responsável pelo controller <b>{$szController}</b>.");
- }
- if( !$this->ControllerActionExists( $szController, $szMethod ) ){
- throw new Exception( "Não foi possível encontrar a action <b>{$szMethod}</b> no controller <b>{$szController}</b>." );
- }
- }elseif( $nParamsLen == 1 ){
- $szController = $pActions[0];
- if( !$this->ControllerExists( $szController ) ){
- $szMethod = $szController;
- $szController = $config['default_controller'];
- if( !$this->ControllerActionExists( $szController, $szMethod ) ){
- throw new Exception( "Não foi possível encontrar o controlador <b>{$szMethod}</b>.");
- }
- }else{
- $szMethod = $config['default_method'];
- if( !$this->ControllerActionExists( $szController, $config['default_method'] ) ){
- throw new Exception( "Não foi possível encontrar a ação <b>{$szMethod}</b> no controlador <b>{$szController}</b>.");
- }
- }
- $pParams = array();
- }elseif( $nParamsLen == 2 ){
- $szController = $pActions[0];
- $szMethod = $pActions[1];
- $pParams = array();
- }elseif( $nParamsLen > 2 ){
- $szController = $pActions[0];
- $szMethod = $pActions[1];
- $pParams = array_slice( $pActions, 2 );
- }
- $this->LoadController( $szController, $szMethod, $pParams );
- }
- private function LoadControllers(){
- if( $pDir = opendir( 'Application/Controller' ) ){
- while( ( $pFile = readdir( $pDir ) ) !== false ){
- if( $pFile != "." && $pFile != ".." ){
- require_once( "Application/Controller/{$pFile}" );
- }
- }
- }
- }
- private function StartApplication(){
- try{
- if( $this->oDb == null ){
- $this->oDb = new Database();
- }
- $this->oDb->Open();
- $this->LoadControllers();
- $this->ParseArgs();
- }catch( Exception $e ){
- $this->LoadController( 'error', 'index', $e->getMessage() );
- }
- }
- }
- ?>
Add Comment
Please, Sign In to add comment