<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cultura Digital#Blog &#187; errores</title>
	<atom:link href="http://blog.culturadigital.org/etiqueta/errores/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.culturadigital.org</link>
	<description>Tener algo que decir; y decirlo.</description>
	<lastBuildDate>Mon, 26 Apr 2010 15:43:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP: Gestión personalizada de errores</title>
		<link>http://blog.culturadigital.org/tecnologia/desarrollo-web/php-gestion-personalizada-de-errores</link>
		<comments>http://blog.culturadigital.org/tecnologia/desarrollo-web/php-gestion-personalizada-de-errores#comments</comments>
		<pubDate>Mon, 04 Feb 2008 11:13:49 +0000</pubDate>
		<dc:creator>J.A.Cobo</dc:creator>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[errores]]></category>
		<category><![CDATA[php4]]></category>
		<category><![CDATA[set_error_handler]]></category>

		<guid isPermaLink="false">http://blog.culturadigital.org/desarrollo-web/php-gestion-personalizada-de-errores</guid>
		<description><![CDATA[Hace tiempo que ya conocía la manera de gestionar el control de errores en php4 -excepciones en php5-, pero, aunque me curré cosas más o menos apañás, nunca me gustó del todo pues los errores graves escapaban del control de set_error_handler().
Como en todo, nunca estamos limitados a lo que el propio lenguaje nos ofrece, quizá [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo que ya conocía la manera de gestionar el control de errores en php4 -excepciones en php5-, pero, aunque me curré cosas más o menos <em>apañás</em>, nunca me gustó del todo pues los errores graves escapaban del control de <code class="noblock"><a href="http://es.php.net/manual/es/function.set-error-handler.php" title="la función en el manual de php en español">set_error_handler()</a></code>.<br />
Como en todo, nunca estamos limitados a lo que el propio lenguaje nos ofrece, quizá hemos caído demasiadas veces en la comodidad del uso de <em>frameworks</em>, o quizá sea lo que viene inmediatamente, y la encapsulación no nos deje ver un poco más allá&#8230; precisamente :) .</p>
<h4>Frameworks, librerías o métodos nativos</h4>
<p>Es decir, que <abbr title="Programación Orientada a Objetos">POO</abbr> pase a ser un modelo de programación en scripts prácticamente único y absoluto, <strong>basándonos en frameworks o librerías que muchas vecen reinventan la rueda</strong>, sin una mejora real y sustancial de los métodos nativos del lenguaje.</p>
<p>El hecho es que si quieres gestionar tus propios errores en PHP4 con niveles de informe de usuario y administrador no es tan difícil como en un principio me parecía&#8230; solo era pensar un poco&#8230; más.<br />
<em>Sé que PHP4 está prácticamente muerto pero también sé que muchos servers aún no han migrado :( </em></p>
<h4>Controla la Gestión de Errores:</h4>
<p>Desde que decidí convertir el <a href="http://www.laguardiadejaen.com/web/" title="laguardiadejaen.com">sitio web de La Guardia</a> -era básicamente un blog- en un <acronym title="del inglés: Content Management System">CMS</acronym> y me forcé a usar, en la medida de lo posible y gracias a «Zend FW» o «Simfony», la metodología <acronym title="del inglés: Model View Controller, Modelo Vista Controlador">MVC</acronym>, debo decir que me gusta aún más programar para la web&#8230; es esa forma de «hacer las cosas bien», elegantes&#8230; Luego te puede quedar mejor o peor, pero lo que importa es la intención y tener los conceptos claros ^^.</p>
<h5>El método</h5>
<p>Así, el método, básico desde luego, es tener un <strong>control de usuarios o al menos del administrador</strong>&#8230;. obviamente para elegir un nivel de informe de errores. Aunque casi es lo de menos, usaremos por ejemplo las funciones de sesión de usuario en Wordpress y sin tocar <code class="noblock">WP_error()</code> del que no he estudiado mucho aunque sería muy útil, más aún si hablamos de MVC y POO.</p>
<p><strong>El funcionamiento sería muy sencillo:</strong><br />
Mediante las funciones de usuario de Wordpress o cualquier otro sistema, o el reconocimiento del nivel administrador, bien mediante IP (avanzada para IPs dinámicas en su caso y no muy recomendable en realidad), <strong>generaremos dos tipos de nivel de errores</strong> básicamente:</p>
<ul>
<li>Nivel administrativo.</li>
<li>Nivel de usuario.</li>
</ul>
<h6>Nivel de reporte de errores por usuario</h6>
<p>Primero procederemos a <strong>establecer el reporte de errores en off</strong> para luego comprobar el nivel de usuario y establecer los siguientes niveles:</p>
<ul>
<li>Admin: E_ALL ^ E_NOTICE: Todos los avisos y errores menos los avisos de PHP.</li>
<li>User: E_USER_NOTICE: Solo los avisos de usuario.</li>
</ul>
<p>A la vez que proporcionamos el nivel de error estableceremos la función que ofrecerá el reporte de errores para cada tipo:<br />
<code class="noblock">set_error_handler('miGestorErrores');</code></p>
<p>Y aquí vienen las carencias de PHP4 que nos obligan a escribir un poco más de código:<br />
En PHP5 solo necesitaríamos una única función de gestión de errores porque podríamos pasar a set_error_handler el nivel que queremos que muestre, en este caso para cada tipo de usuario, por ejemplo:</p>
<ul>
<li>Si es el administrador:<br />
	<code class="noblock">set_error_handler('MiGestorErrores', E_ALL);</code></li>
<li>Sino:<br />
	<code class="noblock">set_error_handler('MiGestorErrores', E_USER_NOTICE);</code></li>
</ul>
<p>Pero para PHP4 no podemos hacerlo, ya que no podemos pasarle parámetros a <code class="noblock">set_error_handler()<code class="noblock">, así que simplemente nos costará unas cuantas líneas más para crear una función más.<br />
Esto es: <strong>una función de gestión de errores de usuario y otra de administrador</strong>.<br />
Sí, es muy bruto y se puede y debe pulir... pero por ahora lo dejaremos así para ilustrar.</p>
<p>Así, ya tenemos montado el sistema de informes de error y que podemos usar sin miedo alguno a imprimir errores de php al usuario y sabiendo que tendremos información de todos los errores en modo administrador. Digamos que, omitiendo el tema de seguridad al funcionar como admin, tenemos un entorno de desarrollo y producción en uno :D</p>
<h5>El código:</h5>
<p>Bien, en el caso de Wordpress se puede hacer más o menos así:</p>
<div class="alert"><strong>Muy importante:</strong><br />
(<tt>Línea 5</tt>) Usa tus propios métodos de chequeo del admin, estos son a modo de ejemplo.<br />
El código va bastante explicado y ¡ojo!, le faltaría un poco más de depuración para controlar los datos que llegan a la función...<br />
En fin, que si lo usas, es a modo de ejemplo sólo, ¡compruébalo! ;)</div>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
</pre></td><td class="code"><pre class="php" style="font-family:Consolas, Monaco, 'Lucida Sans Typewriter', 'Lucida Console', 'Andale Mono', monospace;"><span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Errores Off inicial.</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$userdata</span><span style="color: #339933;">;</span>
get_currentuserinfo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Asegurar el nivel de usuario de administrador, eso como cada uno vea -ver 2ª condición-:</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$userdata</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user_level</span> <span style="color: #339933;">===</span> <span style="color: #0000ff;">'Nivel del admin'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$userdata</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user_login</span><span style="color: #339933;">,</span> <span style="color: #000088;">$userdata</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$userdata</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">user_nicename</span><span style="color: #339933;">,</span> etc<span style="color: #339933;">...</span> lo dicho<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span>
	<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_ALL</span> ^ <span style="color: #009900; font-weight: bold;">E_NOTICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Activamos los errores para el admin</span>
	<span style="color: #666666; font-style: italic;">// Pasar el control al gestor de errores definido.</span>
	<span style="color: #990000;">set_error_handler</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'miAdminGestorErrores'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">else</span> <span style="color: #339933;">:</span>
	<span style="color: #990000;">error_reporting</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">E_USER_NOTICE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Pasar el control al gestor de errores, en este caso con un nivel mínimo de reporte: E_USER_NOTICE.</span>
	<span style="color: #990000;">set_error_handler</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'miUserGestorErrores'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">endif</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * función de gestión de errores NIVEL USUARIO.
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> miUserGestorErrores<span style="color: #009900;">&#40;</span><span style="color: #000088;">$num_err</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cadena_err</span><span style="color: #339933;">,</span> <span style="color: #000088;">$archivo_err</span><span style="color: #339933;">,</span> <span style="color: #000088;">$linea_err</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$num_err</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// USER: Este será el Nivel de errores que daremos a los usuarios.</span>
		<span style="color: #666666; font-style: italic;">// No debemos imprimir nada más que nuestra cadena de error, si así lo queremos, claro.</span>
		<span style="color: #b1b100;">case</span> <span style="color: #009900; font-weight: bold;">E_USER_NOTICE</span><span style="color: #339933;">:</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;strong class=&quot;important&quot;&gt;Error:&lt;/strong&gt; '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$cadena_err</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Para el resto nada.</span>
		<span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #666666; font-style: italic;">/* MUY IMPORTANTE: No ejecutar el gestor de errores interno de PHP */</span>
	<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * función de gestión de errores NIVEL ADMIN.
 */</span>
<span style="color: #000000; font-weight: bold;">function</span> miAdminGestorErrores<span style="color: #009900;">&#40;</span><span style="color: #000088;">$num_err</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cadena_err</span><span style="color: #339933;">,</span> <span style="color: #000088;">$archivo_err</span><span style="color: #339933;">,</span> <span style="color: #000088;">$linea_err</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$num_err</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// ADMIN: Error Grave:</span>
		<span style="color: #b1b100;">case</span> <span style="color: #009900; font-weight: bold;">E_USER_ERROR</span><span style="color: #339933;">:</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;div class=&quot;error&quot;&gt;&lt;h5&gt;DEBUG: Error Grave&lt;/h5&gt;'</span>
			<span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;p&gt;[<span style="color: #006699; font-weight: bold;">{$num_err}</span>] <span style="color: #006699; font-weight: bold;">{$cadena_err}</span>&lt;br /&gt;
			Error fatal administrativo en la l&amp;iacute;nea <span style="color: #006699; font-weight: bold;">{$linea_err}</span> del archivo <span style="color: #006699; font-weight: bold;">{$archivo_err}</span>&lt;br /&gt;
			&quot;</span> <span style="color: #339933;">.</span> PHP <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; &quot;</span> <span style="color: #339933;">.</span> <span style="color: #009900; font-weight: bold;">PHP_VERSION</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; (&quot;</span> <span style="color: #339933;">.</span> <span style="color: #009900; font-weight: bold;">PHP_OS</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;)&lt;br /&gt;
			Abortando...&lt;/p&gt;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// ADMIN: Error Alerta:</span>
		<span style="color: #b1b100;">case</span> <span style="color: #009900; font-weight: bold;">E_USER_WARNING</span><span style="color: #339933;">:</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;div class=&quot;alert&quot;&gt;&lt;h5&gt;DEBUG: Advertencia&lt;/h5&gt;'</span>
			<span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;p&gt;[<span style="color: #006699; font-weight: bold;">{$num_err}</span>] <span style="color: #006699; font-weight: bold;">{$cadena_err}</span>&lt;br /&gt;
			Advertencia administrativa en la l&amp;iacute;nea <span style="color: #006699; font-weight: bold;">{$linea_err}</span> del archivo <span style="color: #006699; font-weight: bold;">{$archivo_err}</span>&lt;br /&gt;
			&quot;</span> <span style="color: #339933;">.</span> PHP <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; &quot;</span> <span style="color: #339933;">.</span> <span style="color: #009900; font-weight: bold;">PHP_VERSION</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot; (&quot;</span> <span style="color: #339933;">.</span> <span style="color: #009900; font-weight: bold;">PHP_OS</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;)&lt;/p&gt;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// USER: Este será el Nivel de errores que daremos a los usuarios.</span>
		<span style="color: #666666; font-style: italic;">// No debemos imprimir nada más que nuestra cadena de error.</span>
		<span style="color: #b1b100;">case</span> <span style="color: #009900; font-weight: bold;">E_USER_NOTICE</span><span style="color: #339933;">:</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;strong class=&quot;important&quot;&gt;Error:&lt;/strong&gt; '</span><span style="color: #339933;">.</span><span style="color: #000088;">$cadena_err</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;br /&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Para el resto nada.</span>
		<span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #666666; font-style: italic;">/* MUY IMPORTANTE: No ejecutar el gestor de errores interno de PHP */</span>
	<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<h5>Conclusiones</h5>
<p>Hay que hacer notar que <em>en la función de reporte del administrador</em>, sigo usando E_USER_NOTICE aparte de que con el nivel establecido me llegarán todos menos los avisos de php (E_NOTICE) no cejo en el empeño de <strong>¡usar una única función!</strong> ...pero será más tarde, ahora no hay tiempo :(</p>
<p>Por lo demás, creo que el código por sí mismo se explica bastante bien.</p>
<p>En mis scripts simplemente genero mis errores con un simple:<br />
<code class="noblock">trigger_error('Cadena de Error', Nivel de Error);</code><br />
por ejemplo:<br />
<code class="noblock">trigger_error('No se encontró un archivo básico para el sistema', E_USER_ERROR);</code><br />
Y su versión administrativa con detalles digamos más sensibles:<br />
<code class="noblock">trigger_error('No se encontró el archivo básico para el sistema: ' . $fileRequired, E_USER_ERROR);</code> El nivel de error ya, como es lógico, depende de la severidad del error en tu código.</p>
<h5>MVC</h5>
<p>¿Porqué mencioné MVC?.. pues porque, aún no siendo MVC real, teniendo en cuenta que puedes establecer un preformato para tus avisos de error no necesitarás incrustar más código HTML para generar errores.</p>
<p>La función inicial sería el <strong>Modelo de datos</strong>, las funciones de php, este caso trigger_error, serían los <strong>Controladores</strong> y tu formato de error predefinido sería la <strong>Vista</strong>, tu plantilla.<br />
De esta forma puedes llamar a los errores siempre desde funciones con búfer, por ejemplo con, aunque casi todo filtro es pesado, <code class="noblock">sprintf()</code> o guardándolos en búferes de salida, y luego aplicarles <strong>el formato de la Vista</strong>. Ej:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="php" style="font-family:Consolas, Monaco, 'Lucida Sans Typewriter', 'Lucida Console', 'Andale Mono', monospace;">	<span style="color: #666666; font-style: italic;">// Notices:</span>
	<span style="color: #000088;">$msgError</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;strong&gt;No se realiz&amp;oacute; la cach&amp;eacute;!&lt;/strong&gt;&lt;br /&gt;
	No se pudo &lt;strong&gt;%1$s&lt;/strong&gt; en el archivo: %2$s'</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$msgNotice</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;strong&gt;Atenci&amp;oacute;n!&lt;/strong&gt;&lt;br /&gt;
	%1$s.'</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$msgOk</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;strong&gt;Cach&amp;eacute;!.&lt;/strong&gt;&lt;br /&gt;
	El archivo &lt;strong&gt;%1$s&lt;/strong&gt; se cache&amp;oacute; correctamente!'</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Y luego generar un <strong>error formateado</strong> simplemente con:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:Consolas, Monaco, 'Lucida Sans Typewriter', 'Lucida Console', 'Andale Mono', monospace;"><span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$msgError</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'escribir'</span><span style="color: #339933;">,</span><span style="color: #000088;">$fileCached</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">E_USER_WARNING</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Sabiendo que tus errores tienen un formato HTML o una Vista del tipo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="xml" style="font-family:Consolas, Monaco, 'Lucida Sans Typewriter', 'Lucida Console', 'Andale Mono', monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;div</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;error&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;h5<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>DEBUG: Error Grave<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h5<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
			<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>[%NúmeroError%] %TextoError%<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;br</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			Error fatal administrativo en la l<span style="color: #ddbb00;">&amp;iacute;</span>nea %LineaError% del archivo %ArchivoError%<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;br</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			%DatosOpcionales%<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;br</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
			Abortando...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/div<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p> con el que puede trabajar un Diseñador Web :?</p>
<p>O incluso puedes hacer otra función que gestione a trigger_error, o lo suyo, una clase... pero es ya es liar mucho la breva para eta entrada ;)</p>
<h4>Fin</h4>
<p>Pues eso, como siempre, a mí me basta y me va muy bien :D pero cualquier sugerencia será bien recibida ;) sin olvidar, eso sí, que es un ejercicio práctico a modo de ejemplo y de compatibilidad inversa -por el tema de la nueva gestión de errores de PHP5, las excepciones y tal- ;) </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.culturadigital.org/tecnologia/desarrollo-web/php-gestion-personalizada-de-errores/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
