-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Melhorias no sistema do Load MVC e no .htaccess
- Loading branch information
Showing
3 changed files
with
184 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,6 +20,12 @@ class Load{ | |
*/ | ||
static public $_method; | ||
|
||
/** | ||
* Atributo que monta as pastas de parâmetros | ||
* @var string | ||
*/ | ||
static private $_url = null; | ||
|
||
/** | ||
* Atributo para determinar o Módulo que será chamado | ||
* @var string | ||
|
@@ -44,14 +50,85 @@ class Load{ | |
*/ | ||
static public $_request; | ||
|
||
static public function getApp(array $request) | ||
/** | ||
* Atributo para determinar o arquivo do controller | ||
* @var string | ||
*/ | ||
static private $_fileControler; | ||
|
||
/** | ||
* Método da classe load que monta qual controlle e action será acessada, | ||
* e qual o método de resposta utilizado | ||
* @author Lucien Jospin <[email protected]> | ||
* @access public | ||
* @return boolean | ||
*/ | ||
static public function getApp() | ||
{ | ||
if (self::$_url === null) { | ||
Load::_getUrlList(); | ||
} | ||
|
||
foreach(self::$_url as $key=>$value) { | ||
switch ($key) { | ||
case 0 : Load::_setMethod($value); break; | ||
case 1 : Load::_setModule($value); break; | ||
case 2 : Load::_setController($value); break; | ||
case 3 : Load::_setAction($value); break; | ||
} | ||
|
||
} | ||
return true; | ||
} | ||
|
||
/** | ||
* Método que monta a lista de URL que esta sendo passada além da de acesso a aplicação | ||
* @author Lucien Jospin <[email protected]> | ||
* @return array | ||
* @access private | ||
*/ | ||
static private function _getUrlList() | ||
{ | ||
Load::_setMethod($request[1]); | ||
if (isset($request[2])) { | ||
Load::_setModule($request[2]); | ||
global $_SERVER; | ||
|
||
// Primeiro traz todos as pastas abaixo do index.php | ||
$startUrl = strlen( $_SERVER["DOCUMENT_ROOT"] ) -1 ; | ||
$excludeUrl = substr( $_SERVER["SCRIPT_FILENAME"], $startUrl, -11 ); | ||
|
||
// a variável$request possui toda a string da URL após o domínio. | ||
$request = $_SERVER['REQUEST_URI']; | ||
|
||
// Agora retira toda as pastas abaixo da pasta raiz | ||
$request = substr( $request, strlen( $excludeUrl ) ); | ||
|
||
|
||
// Explode a URL para pegar retirar tudo após o ? | ||
$urlTmp = explode("?", $request); | ||
$request = $urlTmp[ 0 ]; | ||
|
||
|
||
// Explo a URL para pegar cada uma das partes da URL | ||
$urlExplodida = explode("/", $request); | ||
|
||
$retorna = array(); | ||
|
||
for($a = 0; $a <= count($urlExplodida); $a ++) | ||
{ | ||
if(isset($urlExplodida[$a]) AND $urlExplodida[$a] != "") | ||
{ | ||
array_push($retorna, $urlExplodida[$a]); | ||
} | ||
} | ||
self::$_url = $retorna; | ||
} | ||
|
||
/** | ||
* Método que seta o método após validação | ||
* @author Lucien Jospin <[email protected]> | ||
* @param string $method | ||
* @return boolean | ||
* @access private | ||
*/ | ||
static private function _setMethod($method) | ||
{ | ||
|
||
|
@@ -60,13 +137,21 @@ static private function _setMethod($method) | |
} else { | ||
throw new ExceptionLoad('Método chamado não existe'); | ||
} | ||
return true; | ||
} | ||
|
||
/** | ||
* Método que seta o módulo após validação | ||
* @author Lucien Jospin <[email protected]> | ||
* @param string $module | ||
* @return boolean | ||
* @access private | ||
*/ | ||
static private function _setModule($module) | ||
{ | ||
if (is_string($module)) { | ||
try{ | ||
Load::validaModule($module); | ||
Load::_validaModule($module); | ||
self::$_module = $module; | ||
} catch(ExceptionLoad $e) { | ||
echo $e; | ||
|
@@ -76,12 +161,97 @@ static private function _setModule($module) | |
} | ||
} | ||
|
||
static private function validaModule($module) | ||
/** | ||
* Método que valida se o Módulo existe | ||
* @author Lucien Jospin <[email protected]> | ||
* @param string $module | ||
* @return boolean | ||
* @access private | ||
*/ | ||
static private function _validaModule($module) | ||
{ | ||
$modulePath = dirname(__DIR__) . '/module/' . $module; | ||
if (!is_dir($modulePath)) { | ||
throw new ExceptionLoad('Módulo não existe nesta aplicação'); | ||
} | ||
} | ||
|
||
/** | ||
* Método que seta o controller após validação | ||
* @author Lucien Jospin <[email protected]> | ||
* @param string $controller | ||
* @return boolean | ||
* @access private | ||
*/ | ||
static private function _setController($controller) | ||
{ | ||
if (is_string($controller)) { | ||
try{ | ||
Load::_validaController($controller); | ||
self::$_controller = $controller; | ||
} catch(ExceptionLoad $e) { | ||
echo $e; | ||
} | ||
} else { | ||
throw new ExceptionLoad('Parâmetro passado como controller não existe'); | ||
} | ||
return true; | ||
} | ||
|
||
/** | ||
* Método que valida se o Controller existe | ||
* @author Lucien Jospin <[email protected]> | ||
* @param string $controller | ||
* @return boolean | ||
* @access private | ||
*/ | ||
static private function _validaController($controller) | ||
{ | ||
self::$_fileControler = dirname(__DIR__) | ||
. '/' | ||
. self::$_module | ||
. '/' . $controller . '.php'; | ||
if (!is_file(self::$_fileControler)) { | ||
throw new ExceptionLoad('Controller inexistente nesta aplicação'); | ||
} | ||
return true | ||
} | ||
|
||
/** | ||
* Método que seta a action caso exista | ||
* @author Lucien Jospin <[email protected]> | ||
* @param string $action | ||
* @return boolean | ||
* @access private | ||
*/ | ||
static private function _setAction($action) | ||
{ | ||
if (is_string($action)) { | ||
try{ | ||
Load::_validaAction($action); | ||
self::$_action = $action; | ||
} catch(ExceptionLoad $e) { | ||
echo $e; | ||
} | ||
} else { | ||
throw new ExceptionLoad('Parâmetro passado como action não existe'); | ||
} | ||
} | ||
|
||
/** | ||
* Método que valida se a action existe | ||
* @author Lucien Jospin <[email protected]> | ||
* @param string $action | ||
* @return boolean | ||
* @access private | ||
*/ | ||
static private function _validaAction($action) | ||
{ | ||
|
||
if (!is_file($controllerPath)) { | ||
throw new ExceptionLoad('Controller inexistente nesta aplicação'); | ||
} | ||
|
||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
RewriteEngine on | ||
ErrorDocument 404 /index.php | ||
DirectoryIndex index.php | ||
# ErrorDocument 404 /index.php | ||
# DirectoryIndex index.php | ||
|
||
RewriteCond %{REQUEST_FILENAME} !-f | ||
RewriteCond %{REQUEST_FILENAME} !-d | ||
RewriteRule . index.php [L] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters