Hola, vi la función trigger y me interesé, por lo que hice una sencilla clase que permite disparar errores.
requiere de mi trait Property. (aquí lo tienen (http://underc0de.org/foro/php/property-en-php/)), abajo de todo el código hay un ejemplo sencillo de su funcionamiento
<?php
include('Property.php');
// esta clase requiere Property!
// Interface
interface IErrorClass
{
// arrojar error
public function error_dispatch();
// setters y getters
public function get_message();
public function set_message($value);
public function get_error_level();
public function set_error_level($value);
}
class ErrorClass implements IErrorClass
{
use Property;
private $message = null;
private $errors = array( NULL, 1024, 512, 256 );
private $error_level = 1;
public function __construct($message = null, $error_level = 1)
{
$this->error_level_control($error_level);
$this->message_control($message);
$this->message = $message;
$this->error_level = $error_level;
}
private function error_level_control($lvl)
{
if(!isset($this->errors[$lvl]))
{
$this->error_level = 3;
$this->message = 'Invalid error type specified';
$this->error_dispatch();
}
return true;
}
private function message_control(&$message)
{
$message = htmlentities($message);
$message = utf8_encode($message);
return true;
}
public function error_dispatch()
{
trigger_error($this->message, $this->errors[$this->error_level]);
}
public function get_message()
{
return $this->message;
}
public function set_message($value)
{
$this->message_control($value);
$this->message = $value;
}
public function get_error_level()
{
return $this->error_level;
}
public function set_error_level($value)
{
$this->error_level_control($value);
$this->error_level = $value;
}
}
// ejemplo de uso
$error = new ErrorClass();
$error->error_level = 1; // solo se pueden asignar valores de 1 a 3, cuanto mayor es el numero el error va a ser de mayor tipo (E_NOTICE = 1, E_WARNING = 2, E_FATAL = 3)
// si se asigna un valor no permitido tirará FATAL ERROR
$error->message = 'Probando errores';
$error->error_dispatch();
saludos!