Esto es tan solo una pregunta de buenas practicas, tengo el siguiente codigo:
Código PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF8">
</head>
<body>
<?php
define( 'CONTROLLER_PATH', 'controllers/' );
define( 'EXT', '.php' );
// Dividimos la URL.
$requestURI = explode( '/', $_SERVER['REQUEST_URI'] );
// Eliminamos los espacios del principio y final.
$requestURI = array_values( array_filter( $requestURI ) );
$controllerName = ucfirst( $requestURI[0] );
$controllerPath = CONTROLLER_PATH . $controllerName . EXT;
try
{
// Comprobamos que el controlador existe.
if ( ! file_exists( $controllerPath ) )
{
throw new DomainException( 'El archivo <code>' . $controllerPath . '</code> no existe.' );
}
require_once $controllerPath;
if ( ! is_callable( $controllerName ) )
{
throw new RuntimeException( 'El archivo <code>' . $controllerPath . '</code> debe contener un objeto <code>' . $controllerName . '</code>.' );
}
}
catch ( RuntimeException $e )
{
echo $e->getMessage();
}
catch ( DomainException $e )
{
echo '<strong>Error 404.</strong> ' . $e->getMessage();
}
?>
</body>
</html>
Y ya de paso otra pregunta, ¿como puedo comprobar si un objeto es instanciable (o si esta definido en su defecto)? Notareis en el codigo que is_callable() no funciona.
Muchas gracias a todos. Saludos.