<?php error_reporting(E_ALL); define('INDEX', 'index'); // default nama file define('BASE_URL', 'http://localhost:8080/'); // base URL define('APP_DIR', 'app'); // direktori aplikasi define('SYS_DIR', 'sys'); // direktori core system define('ASSET', 'ast'); // direktori asset define('PATH_MODEL', APP_DIR.'/Model'); // direktori model aplikasi define('PATH_VIEW', APP_DIR.'/View'); // direktori view aplikasi define('PATH_CONTROLLER', APP_DIR.'/Controller'); // direktori controller aplikasi define('DEFAULT_CONTROLLER', 'download'); // default class controller define('ERROR_CONTROLLER', 'error'); // default error class controller define('DEFAULT_METHOD', 'index'); // method pertama dijalankan pada controller database konfigurasi define('DB_HOST', 'localhost'); // nama host db mysql define('DB_USER', 'root'); // nama user db mysql define('DB_PWD', ''); // nama password db mysql define('DB_NAME', 'mp3'); // nama database db mysql require(SYS_DIR .'/Model.php'); // class model system require(SYS_DIR .'/Controller.php'); // class controller system require(SYS_DIR .'/Registry.php'); // class model system require(SYS_DIR .'/Loader.php'); // class loader object system $controller = DEFAULT_CONTROLLER; // initial controller default $action = DEFAULT_METHOD; // initial method default pada controller $indexCtl = 1; // index segment controller pada REQ-URI $indexAct = 2; // index segment method pada REQ-URI $segments = explode('/', $_SERVER['REQUEST_URI']); // explode URI segment if (isset($segments[$indexCtl]) && $segments[$indexCtl] == INDEX . '.php'){ // cek index.php main page $segments = explode( '/' ,'/' . implode('/',array_slice($segments,$indexAct))); // replace index.php } if(isset($segments[$indexCtl]) && $segments[$indexCtl] != '') $controller = $segments[$indexCtl]; // mendapatkan segment controller if(isset($segments[$indexAct]) && $segments[$indexAct] != '') $action = $segments[$indexAct]; // mendapatkan segment method $path = PATH_CONTROLLER . '/' . $controller . '.php'; // lokasi file controller aplikasi $registry = new Registry(); // create object registry $loader = new Loader($registry); // load registry ke loader $registry->set('load', $loader); // set magic call load untuk view dan model $registry->set('data', $loader); if(file_exists($path)) // cek file controller di folder controller aplikasi require_once($path); // load file controller else { // segment kedua adalah method, karena tidak memanggil default controller atau index.php // jika controller tidak ditemukan, cek method pada default controller require_once(PATH_CONTROLLER. '/' . DEFAULT_CONTROLLER . '.php'); // load default controller if(!method_exists(DEFAULT_CONTROLLER, $controller)){ // cek method pada default controller //$controller = ERROR_CONTROLLER; // jika method tidak ditemukan, redirect ke error controller //require_once(PATH_CONTROLLER. '/' . $controller . '.php'); // load error controller //$action = INDEX; // panggil method default di error controller $action =$controller; $controller = DEFAULT_CONTROLLER; $obj = new $controller($registry); // create object controller instance $dynMethod = $action; $obj->$dynMethod(array_slice($segments, $indexAct)); return; } else{ $indexAct--; // pointer method segment sebelumnya $action = $controller; // pointer controller ke action karena segment sebelumnya $controller = DEFAULT_CONTROLLER; // set controller ke default } } // controller ditemukan, cek method if(!method_exists($controller, $action)){ // method pada controller tidak ditemukan //$controller = ERROR_CONTROLLER; // redirect ke error controller //require_once(PATH_CONTROLLER. '/' . $controller . '.php'); // load error controller //$action = INDEX; // panggil method default di error controller $action =$controller; $controller = DEFAULT_CONTROLLER; $obj = new $controller($registry); // create object controller instance $dynMethod = $action; $obj->$dynMethod(array_slice($segments, $indexAct)); return; } $obj = new $controller($registry); // create object controller instance die(call_user_func_array(array($obj, $action), array_slice($segments, $indexAct+1))); // panggil method dari object controller dengan parameter segment berikutnya ?>
Home » Index
Index
Subscribe to:
Posts (Atom)
0 comments:
Post a Comment