Una de las necesidades más comunes en el desarrollo de Sitios profesionales es implementar URLs amigables, así convertimos algo como /index.php?articulo=1 por algo más cómodo y agradable a la vista del usuario: /blog/introduccion.htm
Para lograr esto existen muchos paquetes, que son altamente recomendables, como:.
En esta clase no buscamos superar a nadie, simplemente quiero demostrarles que puede ser sencillo hasta cierto nivel.
###.htaccess
RewriteEngine On
RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteRule $(.+)^ index.php?uri=$1 [QSA,L]
###Routing.php
<?php
class Router
{
private $_uri = array();
private $_action = array();
public function add($uri, $action = null)
{
$this->_uri[] = '/' . trim($uri, '/');
if ($action != null)
{
$this->_action[] = $action;
}
}
public function run()
{
$uriGet = isset($_GET['uri']) ? '/' . $_GET['uri'] : '/';
foreach ($this->_uri as $key => $value)
{
if (preg_match("#^$value$#", $uriGet))
{
$action = $this->_action[$key];
$this->runAction($action);
}
}
}
private function runAction($action)
{
if($action instanceof \Closure)
{
$action();
}
else
{
$params = explode('@', $action);
$obj = new $params[0];
$obj->{$params[1]}();
}
}
}
?>
###index.php
<?php
require 'Routing.php';
require 'Control/HomeController.php';
$router = new Routing();
$router->add('/',function(){
echo "Hola Mundo - Esta es una ruta simple";
});
//de esta manera llamamos una funcion dentro de una clase
//class @ method
$router->add('/home','HomeController@showHome');
$router->add('/about','HomeController@showAbout');
$router->run();
?>
###HomeController.php
<?php
class HomeController {
//HomeController@showHome
public function showHome(){
return "Hola mundo - Asi llamo una funcion dentro de un controllador";
}
//HomeController@showAbout
public function showAbout(){
return "Hola mundo - Asi llamo una funcion dentro de un controllador";
}
}
?>
Que Viva el Software Libre :D
Está muy bueno.
Yo estoy tratando de entender más o menos algunas funciones de laravel, solo de curiosidad.