Skip to content

Commit

Permalink
Melhorias no sistema do Load MVC e no .htaccess
Browse files Browse the repository at this point in the history
  • Loading branch information
jospin committed Jan 27, 2015
1 parent 19a4f6e commit 0f372ee
Show file tree
Hide file tree
Showing 3 changed files with 184 additions and 18 deletions.
182 changes: 176 additions & 6 deletions Lib/Mvc/Load.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
{

Expand All @@ -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;
Expand All @@ -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');
}

}

}
8 changes: 6 additions & 2 deletions public/.htaccess
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]
12 changes: 2 additions & 10 deletions public/index.php
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
<?php

require_once dirname(__DIR__) . '/autload.php';
use Lib\Mvc as Mvc;
/**
* File is very important for skeleton of the application
* I use redirect_url cause it call parameters witch may or may not exist.
*/
echo '<pre>';
$redirect_url = array();
if (isset($_SERVER['REDIRECT_URL'])) {
$redirect_url = explode('/',$_SERVER['REDIRECT_URL']);
}
//$redirect_url = explode('/',$_SERVER['REDIRECT_URL']);
try{
$load = Mvc\Load::getApp($redirect_url);
$load = Mvc\Load::getApp();
} catch(Mvc\ExceptionLoad $e) {
echo $e;
die();
Expand Down

0 comments on commit 0f372ee

Please sign in to comment.