Ver Mensaje Individual
  #13 (permalink)  
Antiguo 27/10/2013, 12:19
Avatar de Fernand0
Fernand0
 
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: error_handler no toma algunos errores

muestro el codigo para el que le interese...

cada clase es un archivo:

Código PHP:
Ver original
  1. class Station
  2. {
  3.    
  4.     private $object = null;
  5.    
  6.     private $return = null;
  7.    
  8.     public function __construct(Route $route)
  9.     {
  10.         extract($route->route);
  11.        
  12.         $this->locationExists($location);
  13.         $this->actionExists($action, $argument);
  14.     }
  15.    
  16.     private function locationExists($name)
  17.     {
  18.         $class = "application\\location\\$name";
  19.        
  20.         if(!class_exists($class))
  21.             throw new Exception();
  22.        
  23.         argControl::start();
  24.         $this->object = new $class();
  25.         argControl::stop();
  26.     }
  27.    
  28.     private function actionExists($action, $argument)
  29.     {
  30.         $object = $this->object;
  31.        
  32.         if(!method_exists($object, $action))
  33.             throw new Exception();
  34.        
  35.         argControl::start();
  36.         if(is_null($argument))
  37.             $this->return = $object->$action();
  38.         else
  39.             $this->return = $object->$action($argument);
  40.         argControl::stop();
  41.     }
  42.    
  43. }

Código PHP:
Ver original
  1. class argControl
  2. {
  3.    
  4.     public static $func = array(
  5.                                __CLASS__,
  6.                                'errorHandler'
  7.                            );
  8.    
  9.     public static function start($func = null)
  10.     {
  11.         if(!empty($func))
  12.             static::$func = $func;
  13.        
  14.         set_error_handler(static::$func);
  15.     }
  16.    
  17.     public static function stop()
  18.     {
  19.         restore_error_handler();
  20.     }
  21.    
  22.     public static function errorHandler($errno, $errstr)
  23.     {
  24.         echo "error: $errno<br>";
  25.     }
  26.    
  27. }

Código PHP:
Ver original
  1. class Index extends Location
  2. {
  3.    
  4.     public function hello($arg)
  5.     {
  6.         echo "hello $arg!";
  7.     }
  8.    
  9.     public function defaultAction()
  10.     {
  11.         echo "default action<br>";
  12.     }
  13.    
  14. }


no hacia las suficientes verificaciones.. una pavada... mi PHP esta MUY oxidado.... por ahora anda bien el codigo

igual estaria bueno que los expertos digan PORQUE NO utilizarian set_error_handler o Reflection

Saludos.

PD.: no tenia nada que ver con la configuracion... ni con el manual... ni con nada de lo que se menciono previamente, aclaro para no generar dudas

Última edición por Fernand0; 28/10/2013 a las 03:41 Razón: redundancias removidas de la class Station..