Foros del Web » Programando para Internet » PHP » Zend »

try require catch - zend framework

Estas en el tema de try require catch - zend framework en el foro de Zend en Foros del Web. Hola, estaba mirándome el tutorial del zend framework y, al ver el código del try/catch del bootstrap.php, me he decidido a probarlo. He intentado que ...
  #1 (permalink)  
Antiguo 28/01/2009, 12:08
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Pregunta try require catch - zend framework

Hola, estaba mirándome el tutorial del zend framework y, al ver el código del try/catch del bootstrap.php, me he decidido a probarlo.

He intentado que saltara el catch así (poniendo una url incorrecta en el require):
Código PHP:
try {
    require 
'../application/bootstrap.ph';
} catch (
Exception $exception) {
    echo 
'<html><body><center>'
       
'An exception occured while bootstrapping the application.';
    if (
defined('APPLICATION_ENVIRONMENT') && APPLICATION_ENVIRONMENT != 'production') {
        echo 
'<br /><br />' $exception->getMessage() . '<br />'
           
'<div align="left">Stack Trace:' 
           
'<pre>' $exception->getTraceAsString() . '</pre></div>';
    }
    echo 
'</center></body></html>';
    exit(
1);

Yo esperaba que me saltara el código del catch pero me ha salido un warning y un fatal error en el require.

¿Qué se me escapa?
  #2 (permalink)  
Antiguo 28/01/2009, 12:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: try require catch - zend framework

Hola jerkan,

El require no lanza una excepción, ya que es un construct de PHP, lo que debes de hacer en este caso es comprobar con file_exists primero si existe y luego lanzar el require adecuado, y en caso contrario lanzar la excepción, por ejemplo:
Código php:
Ver original
  1. try {
  2.     if(!file_exists( '../application/bootstrap.php')) {
  3.             throw new Exception('no existe bootstrap.php');
  4.     } else {
  5.             require '../application/bootstrap.php';
  6.     }
  7. } catch( Exception $e ) {
  8.    // stuff
  9. }

Saludos
  #3 (permalink)  
Antiguo 28/01/2009, 12:50
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 19 años, 2 meses
Puntos: 19
Respuesta: try require catch - zend framework

Ah, vale. Entonces, es para las instrucciones que hay dentro del bootstrap!

Gracias por la respuesta, GatorV.
  #4 (permalink)  
Antiguo 28/01/2009, 14:52
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 5 meses
Puntos: 32
Respuesta: try require catch - zend framework

Mmm... no sé si entendiste lo que te comenta GatorV.

El tema es que PHP no es como Java, por defecto el 99.99 % del lenguaje no retorna ninguna excepción en caso de falla, por lo tanto no podrás atrapar nada con try/catch.

Distinto sucede con Zend Framework, tú estás trabajando con clases que retornarn siempre en caso de fallas una excepción, por lo tanto sí puedes intentar atrapar las excepciones y usar ademas el arbol de excepciones que te provee Zend (como Java).

No sé si queda más claro ahora
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 29/01/2009, 05:02
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 19 años, 2 meses
Puntos: 55
Respuesta: try require catch - zend framework

simplemente para agregar uqe en vez de utilizar file_exists() usar is_file(), la diferencia radica en que la segunda busca solo el archivo y deuvleve true si lo encuentra y la primera si encuentra el archivo o la carpeta devuelve true, ademas es mas rapida la segunda q la primera
si necesitas buscar un directorio usas is_dir()

saludos
__________________
Degiovanni Emilio
developtus.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:59.