Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/07/2013, 15:51
Avatar de Karmac
Karmac
 
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 13 años, 5 meses
Puntos: 34
Excepciones apropiadas

Buenas noches.

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_valuesarray_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>
Como podeis ver lanzo dos excepciones, pero, ¿son las apropiadas para cada caso? No se si me explico, ¿son las excepciones que acompañan a cada tipo de error o deberia utilizar otra de las clases predefinidas?

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.