Simples Bootstrap em construção já utilizando autoload. :)
<?php
namespace Lib;
use Controller\IndexController;
use Controller\ErroController;
/**
* Classe resposnsavel por inciar a aplicação
*
* url[0] - responsavel por definir o controller
* url[1] - responsavel por definir a action do controller
* url[2] - responsavel por definir o valor do action no controller
*/
class Bootstrap {
protected $erroController = null;
public function __construct()
{
$url = isset($_GET["url"]) ? $_GET["url"] : null;
$url = explode('/',rtrim($url,'/'));
if (empty($url[0])) {
$controller = new IndexController();
$controller->indexAction();
return false;
}
$url[0] = $this->factoryRoute($url[0]);
$url[0] = '\Controller\\'.$url[0];
if (!class_exists($url[0])) {
$this->getErroController()->indexAction();
return false;
}
$controller = new $url[0];
$controller->loadModel($url[0]);
if (isset($url[2])) {
$url[1] = $this->factoryRoute($url[1], 'Action');
if (method_exists($controller, $url[1])) {
$controller->$url[1]($url[2]);
} else {
$this->getErroController()->indexAction();
}
return false;
}
if(isset($url[1])) {
$url[1] = $this->factoryRoute($url[1], 'Action');
if (method_exists($controller, $url[1])) {
$controller->$url[1]();
} else {
$this->getErroController()->indexAction();
}
return false;
}
$controller->indexAction();
}
/**
* classe responsavel por converter rota em controller
* @param string $url
* return string
*/
private function factoryRoute($url, $type = 'Controller')
{
if (strstr($url, '-') === false) {
return ucfirst($url) . $type;
}
$parts = explode('-', $url);
$newUrl = null;
foreach ($parts as $part) {
$newUrl .= ucfirst($part);
}
return $newUrl . $type;
}
protected function getErroController()
{
if ($this->erroController == null) {
$this->erroController = new ErroController();
}
return $this->erroController;
}
}
<?php
namespace Lib;
use Controller\IndexController;
use Controller\ErroController;
/**
* Classe resposnsavel por inciar a aplicação
*
* url[0] - responsavel por definir o controller
* url[1] - responsavel por definir a action do controller
* url[2] - responsavel por definir o valor do action no controller
*/
class Bootstrap {
protected $erroController = null;
public function __construct()
{
$url = isset($_GET["url"]) ? $_GET["url"] : null;
$url = explode('/',rtrim($url,'/'));
if (empty($url[0])) {
$controller = new IndexController();
$controller->indexAction();
return false;
}
$url[0] = $this->factoryRoute($url[0]);
$url[0] = '\Controller\\'.$url[0];
if (!class_exists($url[0])) {
$this->getErroController()->indexAction();
return false;
}
$controller = new $url[0];
$controller->loadModel($url[0]);
if (isset($url[2])) {
$url[1] = $this->factoryRoute($url[1], 'Action');
if (method_exists($controller, $url[1])) {
$controller->$url[1]($url[2]);
} else {
$this->getErroController()->indexAction();
}
return false;
}
if(isset($url[1])) {
$url[1] = $this->factoryRoute($url[1], 'Action');
if (method_exists($controller, $url[1])) {
$controller->$url[1]();
} else {
$this->getErroController()->indexAction();
}
return false;
}
$controller->indexAction();
}
/**
* classe responsavel por converter rota em controller
* @param string $url
* return string
*/
private function factoryRoute($url, $type = 'Controller')
{
if (strstr($url, '-') === false) {
return ucfirst($url) . $type;
}
$parts = explode('-', $url);
$newUrl = null;
foreach ($parts as $part) {
$newUrl .= ucfirst($part);
}
return $newUrl . $type;
}
protected function getErroController()
{
if ($this->erroController == null) {
$this->erroController = new ErroController();
}
return $this->erroController;
}
}