<?xml version="1.0" encoding="iso-8859-1"?>
<!-- generator="wordpress/1.5.1.3" -->
<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/"
>

<channel>
	<title>EsLoMas.com</title>
	<link>http://www.eslomas.com</link>
	<description>Informática, internet y algo del mundo real</description>
	<pubDate>Tue, 06 May 2008 06:42:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1.3</generator>
	<language>en</language>

		<item>
		<title>Framework de Zend para el desarrollo de aplicaciones PHP</title>
		<link>http://www.eslomas.com/index.php/archives/2007/07/03/framework-de-zend-para-el-desarrollo-de-aplicaciones-php/</link>
		<comments>http://www.eslomas.com/index.php/archives/2007/07/03/framework-de-zend-para-el-desarrollo-de-aplicaciones-php/#comments</comments>
		<pubDate>Tue, 03 Jul 2007 13:56:32 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
		<guid>http://www.eslomas.com/index.php/archives/2007/07/03/framework-de-zend-para-el-desarrollo-de-aplicaciones-php/</guid>
		<description><![CDATA[Zend acaba de publicar [1] la primera versión de su framework de desarrollo de aplicaciones para PHP. En la actualidad hay multitud de estos frameworks, pero algo que siempre he echado en falta al programar con PHP, es un framework completo y oficial. PHP viene con multitud de funciones que habitualmente encapsulan el comportamiento de librerías externas, pero sin embargo carecía hasta ahora de un conjunto de clases que proporcionaran la infraestructura básica necesaria para construir aplicaciones, sin tener que reescribir multitud de código en cada proyecto.
 (more&#8230;) [2]


[1] http://devzone.zend.com/article/2262-Zend-Framework-1.0.0-production-release
[2] http://www.eslomas.com/index.php/archives/2007/07/03/framework-de-zend-para-el-desarrollo-de-aplicaciones-php/#more-324]]></description>
			<content:encoded><![CDATA[<p><img src="/upload/2007/07/PoweredBy_ZF.png" alt="" class="alignleft" />Zend <a href="http://devzone.zend.com/article/2262-Zend-Framework-1.0.0-production-release" target="_blank" class="external">acaba de publicar</a> la primera versión de su framework de desarrollo de aplicaciones para <acronym title="Hypertext PreProcessing">PHP</acronym>. En la actualidad hay multitud de estos frameworks, pero algo que siempre he echado en falta al programar con <acronym title="Hypertext PreProcessing">PHP</acronym>, es un framework completo y oficial. <acronym title="Hypertext PreProcessing">PHP</acronym> viene con multitud de funciones que habitualmente encapsulan el comportamiento de librerías externas, pero sin embargo carecía hasta ahora de un conjunto de clases que proporcionaran la infraestructura básica necesaria para construir aplicaciones, sin tener que reescribir multitud de código en cada proyecto.<br />
 <a href="http://www.eslomas.com/index.php/archives/2007/07/03/framework-de-zend-para-el-desarrollo-de-aplicaciones-php/#more-324"></a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2007/07/03/framework-de-zend-para-el-desarrollo-de-aplicaciones-php/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Validación de datos de entrada con expresiones regulares en PHP</title>
		<link>http://www.eslomas.com/index.php/archives/2007/04/17/validacion-de-datos-de-entrada-con-expresiones-regulares-en-php/</link>
		<comments>http://www.eslomas.com/index.php/archives/2007/04/17/validacion-de-datos-de-entrada-con-expresiones-regulares-en-php/#comments</comments>
		<pubDate>Tue, 17 Apr 2007 14:15:58 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
		<guid>http://www.eslomas.com/index.php/archives/2007/04/17/validacion-de-datos-de-entrada-con-expresiones-regulares-en-php/</guid>
		<description><![CDATA[Ayer me llevé una buena sorpresa al leer un post que me llegó vía Buayacorp [1]. Desde siempre he considerado fundamental la comprobación y validación de los parámetros de entrada de las aplicaciones web, algo imprescindible si se quiere garantizar en cierta medida el correcto funcionamiento de una aplicación o protegerla frente a diferentes tipos de ataques. 
   Para realizar estas validaciones he utilizado diversas técnicas, como comprobar si las variables están definidas o no, si son del tipo correcto, si los valores están entre los rangos permitidos, etc. Una de las herramientas más valiosas que hasta ayer consideraba más valiosas eran las expresiones regulares de PHP (POSIX) [2].
   Desde que comencé a utilizar estas funciones había un aviso en la documentación de PHP que me suscitaba cierta curiosidad. Este aviso decía y dice: Aviso Estas expresiones regulares no son seguras con material binario. Las Funciones PCRE lo son. Siempre me he preguntado a qué se refería la documentación con ese mensaje tan críptico, pero la verdad es que nunca pensé que pudiera afectar al uso que hacía de las expresiones regulares, no al menos en la parte de verificación de datos de formularios, información que llega en formato texto. Sin embargo, tal como dice Alex en su página, y tal como se ve también en una reciente contribución (01-04-2007, Edward Z. Yang) en la propia página de PHP, esto no es así.
    (more&#8230;) [3]


[1] http://www.buayacorp.com/archivos/php-uso-adecuado-de-expresiones-regulares/
[2] http://www.php.net/manual/es/ref.regex.php
[3] http://www.eslomas.com/index.php/archives/2007/04/17/validacion-de-datos-de-entrada-con-expresiones-regulares-en-php/#more-319]]></description>
			<content:encoded><![CDATA[<p>Ayer me llevé una buena sorpresa al leer un post que me llegó vía <a href="http://www.buayacorp.com/archivos/php-uso-adecuado-de-expresiones-regulares/" target="_blank" class="external">Buayacorp</a>. Desde siempre he considerado fundamental la comprobación y validación de los parámetros de entrada de las aplicaciones web, algo imprescindible si se quiere garantizar en cierta medida el correcto funcionamiento de una aplicación o protegerla frente a diferentes tipos de ataques. </p>
   <p>Para realizar estas validaciones he utilizado diversas técnicas, como comprobar si las variables están definidas o no, si son del tipo correcto, si los valores están entre los rangos permitidos, etc. Una de las herramientas más valiosas que hasta ayer consideraba más valiosas eran las <a href="http://www.php.net/manual/es/ref.regex.php" target="_blank" class="external">expresiones regulares de <acronym title="Hypertext PreProcessing">PHP</acronym> (POSIX)</a>.</p>
   <p>Desde que comencé a utilizar estas funciones había un aviso en la documentación de <acronym title="Hypertext PreProcessing">PHP</acronym> que me suscitaba cierta curiosidad. Este aviso decía y dice: <code><strong>Aviso</strong> Estas expresiones regulares no son seguras con material binario. Las Funciones PCRE lo son</code>. Siempre me he preguntado a qué se refería la documentación con ese mensaje tan críptico, pero la verdad es que nunca pensé que pudiera afectar al uso que hacía de las expresiones regulares, no al menos en la parte de verificación de datos de formularios, información que llega en formato texto. Sin embargo, tal como dice Alex en su página, y tal como se ve también en una reciente contribución (01-04-2007, Edward Z. Yang) en la propia página de <acronym title="Hypertext PreProcessing">PHP</acronym>, esto no es así.</p>
   <p> <a href="http://www.eslomas.com/index.php/archives/2007/04/17/validacion-de-datos-de-entrada-con-expresiones-regulares-en-php/#more-319"></a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2007/04/17/validacion-de-datos-de-entrada-con-expresiones-regulares-en-php/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Resumen de vectores de ataque XSS y SQL Injection</title>
		<link>http://www.eslomas.com/index.php/archives/2007/03/27/resumen-de-vectores-de-ataque-xss-y-sql-injection/</link>
		<comments>http://www.eslomas.com/index.php/archives/2007/03/27/resumen-de-vectores-de-ataque-xss-y-sql-injection/#comments</comments>
		<pubDate>Tue, 27 Mar 2007 07:40:43 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>.NET</category>
	<category>PHP &amp; MySQL</category>
	<category>Otros diseño web</category>
		<guid>http://www.eslomas.com/index.php/archives/2007/03/27/resumen-de-vectores-de-ataque-xss-y-sql-injection/</guid>
		<description><![CDATA[Una tarea importante en cualquier desarrollo es garantizar su seguridad ante ataques. O al menos así debería serlo, porque no suele ser lo habitual. Muchas veces estas cosas no se tienen en cuenta, bien por premuras de tiempo en el cierre de proyectos, o por el mero desconocimiento de los desarrolladores, que hace que sus aplicaciones sean auténticos coladores.
 (more&#8230;) [1]


[1] http://www.eslomas.com/index.php/archives/2007/03/27/resumen-de-vectores-de-ataque-xss-y-sql-injection/#more-318]]></description>
			<content:encoded><![CDATA[<p>Una tarea importante en cualquier desarrollo es garantizar su seguridad ante ataques. O al menos así debería serlo, porque no suele ser lo habitual. Muchas veces estas cosas no se tienen en cuenta, bien por premuras de tiempo en el cierre de proyectos, o por el mero desconocimiento de los desarrolladores, que hace que sus aplicaciones sean auténticos coladores.<br />
 <a href="http://www.eslomas.com/index.php/archives/2007/03/27/resumen-de-vectores-de-ataque-xss-y-sql-injection/#more-318"></a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2007/03/27/resumen-de-vectores-de-ataque-xss-y-sql-injection/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Vulnerabilidades CSRF en aplicaciones web</title>
		<link>http://www.eslomas.com/index.php/archives/2007/03/12/vulnerabilidades-csrf-en-aplicaciones-web/</link>
		<comments>http://www.eslomas.com/index.php/archives/2007/03/12/vulnerabilidades-csrf-en-aplicaciones-web/#comments</comments>
		<pubDate>Mon, 12 Mar 2007 14:45:15 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>.NET</category>
	<category>PHP &amp; MySQL</category>
	<category>Otros Informática</category>
	<category>JavaScript</category>
	<category>Otros diseño web</category>
		<guid>http://www.eslomas.com/index.php/archives/2007/03/12/vulnerabilidades-csrf-en-aplicaciones-web/</guid>
		<description><![CDATA[Hoy voy a hablar sobre un tipo de vulnerabilidades de aplicaciones web llamado Cross Site Request Forgery (CSRF). Aunque su nombre guarde cierta similitud con otro tipo de vulnerabilidades como Cross Site Scripting (XSS), hay importantes diferencias entre ellas. A diferencia de los ataques XSS, que se basan en explotar la confianza que tiene un usuario en un determinado sitio web o aplicación, los ataques CSRF, también denominados como Cross Site Reference Forgery o XSRF, se basan en explotar la confianza que los sitios web tienen con sus usuarios.
    (more&#8230;) [1]


[1] http://www.eslomas.com/index.php/archives/2007/03/12/vulnerabilidades-csrf-en-aplicaciones-web/#more-317]]></description>
			<content:encoded><![CDATA[<p>Hoy voy a hablar sobre un tipo de vulnerabilidades de aplicaciones web llamado Cross Site Request Forgery (CSRF). Aunque su nombre guarde cierta similitud con otro tipo de vulnerabilidades como Cross Site Scripting (XSS), hay importantes diferencias entre ellas. A diferencia de los ataques XSS, que se basan en explotar la confianza que tiene un usuario en un determinado sitio web o aplicación, los ataques CSRF, también denominados como Cross Site Reference Forgery o XSRF, se basan en explotar la confianza que los sitios web tienen con sus usuarios.</p>
   <p> <a href="http://www.eslomas.com/index.php/archives/2007/03/12/vulnerabilidades-csrf-en-aplicaciones-web/#more-317"></a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2007/03/12/vulnerabilidades-csrf-en-aplicaciones-web/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Marzo mes de los errores PHP</title>
		<link>http://www.eslomas.com/index.php/archives/2007/02/08/marzo-mes-de-los-errores-php/</link>
		<comments>http://www.eslomas.com/index.php/archives/2007/02/08/marzo-mes-de-los-errores-php/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 08:01:36 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
		<guid>http://www.eslomas.com/index.php/archives/2007/02/08/marzo-mes-de-los-errores-php/</guid>
		<description><![CDATA[Vía el boletín de &#8220;Una al día&#8221; de Hispasec, me llega la noticia de que marzo será el mes de los errores de PHP [1]. La iniciativa parte de Stefan Esser, antiguo desarrollador del núcleo de PHP y líder hasta hace poco del proyecto Hardened-PHP, ante sus desencuentros con otros participantes del proyecto y con el PHP Security Team.
   PHP es uno de los lenguajes más utilizados en el desarrollo de páginas web, estimándose su penetración en alrededor de un 34% de todos los webs existentes. Esto ha sido posible dada su facilidad de uso que ha hecho que múltiples desarrolladores y empresas lo adopten como principal lenguaje de desarrollo, sin embargo, esa facilidad ha producido también que la calidad de los proyectos realizados sea muchas veces muy baja, sobretodo referente a cuestiones de seguridad como sql-injection y XSS.
   Pero no todos los peligros que padecen los proyectos realizados en PHP provienen de una mal diseño o programación, sino que hay muchos de ellos que están relacionados directamente con la propia plataforma PHP. Es este tipo de fallos son los que Stefan Esser publicará cada día durante el mes de marzo, con el fin de concienciar a los desarrolladores finales de los potenciales problemas de la plataforma y forzar a los desarrolladores del lenguaje, a tomar medidas que permitan subsanar las deficiencias existentes, así como mejorar los criterios de calidad relativos a la seguridad.

[1] http://www.hispasec.com/unaaldia/3028]]></description>
			<content:encoded><![CDATA[<p><img src="/upload/php.png" class="alignleft" alt="PHP" />Vía el boletín de &#8220;Una al día&#8221; de Hispasec, me llega la noticia de que marzo será el <a href="http://www.hispasec.com/unaaldia/3028" target="_blank" class="external">mes de los errores de <acronym title="Hypertext PreProcessing">PHP</acronym></a>. La iniciativa parte de Stefan Esser, antiguo desarrollador del núcleo de <acronym title="Hypertext PreProcessing">PHP</acronym> y líder hasta hace poco del proyecto Hardened-<acronym title="Hypertext PreProcessing">PHP</acronym>, ante sus desencuentros con otros participantes del proyecto y con el <acronym title="Hypertext PreProcessing">PHP</acronym> Security Team.</p>
   <p><acronym title="Hypertext PreProcessing">PHP</acronym> es uno de los lenguajes más utilizados en el desarrollo de páginas web, estimándose su penetración en alrededor de un 34% de todos los webs existentes. Esto ha sido posible dada su facilidad de uso que ha hecho que múltiples desarrolladores y empresas lo adopten como principal lenguaje de desarrollo, sin embargo, esa facilidad ha producido también que la calidad de los proyectos realizados sea muchas veces muy baja, sobretodo referente a cuestiones de seguridad como sql-injection y XSS.</p>
   <p>Pero no todos los peligros que padecen los proyectos realizados en <acronym title="Hypertext PreProcessing">PHP</acronym> provienen de una mal diseño o programación, sino que hay muchos de ellos que están relacionados directamente con la propia plataforma <acronym title="Hypertext PreProcessing">PHP</acronym>. Es este tipo de fallos son los que Stefan Esser publicará cada día durante el mes de marzo, con el fin de concienciar a los desarrolladores finales de los potenciales problemas de la plataforma y forzar a los desarrolladores del lenguaje, a tomar medidas que permitan subsanar las deficiencias existentes, así como mejorar los criterios de calidad relativos a la seguridad.</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2007/02/08/marzo-mes-de-los-errores-php/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Averiguar el pagerank de Google de una página con PHP</title>
		<link>http://www.eslomas.com/index.php/archives/2006/10/04/averiguar-pagerank-google-pagina-con-php/</link>
		<comments>http://www.eslomas.com/index.php/archives/2006/10/04/averiguar-pagerank-google-pagina-con-php/#comments</comments>
		<pubDate>Wed, 04 Oct 2006 18:11:26 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
	<category>Otros Informática</category>
	<category>Otros diseño web</category>
		<guid>http://www.eslomas.com/index.php/archives/2006/10/04/averiguar-pagerank-google-pagina-con-php/</guid>
		<description><![CDATA[El Pagerank de Google es un dato al que multitud de webmasters dan una gran importancia, debido a la influencia que tiene en el volumen de visitas que envía el buscador. Una opción habitual para obtener este dato, suele ser tener instalada la Toolbar de Google, donde se nos indica este pagerank para cada página que visitamos. Sin embargo, vamos a ver continuación otro mecanismo, independiente de la toolbar, y que nos permitirá obtener a nosotros mismos este pagerank mediante código PHP, y mostrarlo dentro de nuestras propias páginas, bien como la típica imagen, o como un comentario html, lo que más nos convenga.
 (more&#8230;) [1]


[1] http://www.eslomas.com/index.php/archives/2006/10/04/averiguar-pagerank-google-pagina-con-php/#more-258]]></description>
			<content:encoded><![CDATA[<p><img src="/upload/php.png" alt="" class="alignleft">El Pagerank de Google es un dato al que multitud de webmasters dan una gran importancia, debido a la influencia que tiene en el volumen de visitas que envía el buscador. Una opción habitual para obtener este dato, suele ser tener instalada la Toolbar de Google, donde se nos indica este pagerank para cada página que visitamos. Sin embargo, vamos a ver continuación otro mecanismo, independiente de la toolbar, y que nos permitirá obtener a nosotros mismos este pagerank mediante código <acronym title="Hypertext PreProcessing">PHP</acronym>, y mostrarlo dentro de nuestras propias páginas, bien como la típica imagen, o como un comentario html, lo que más nos convenga.<br />
 <a href="http://www.eslomas.com/index.php/archives/2006/10/04/averiguar-pagerank-google-pagina-con-php/#more-258"></a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2006/10/04/averiguar-pagerank-google-pagina-con-php/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Consulta diversas APIs con AJAX</title>
		<link>http://www.eslomas.com/index.php/archives/2006/04/10/consulta-diversas-apis-con-ajax/</link>
		<comments>http://www.eslomas.com/index.php/archives/2006/04/10/consulta-diversas-apis-con-ajax/#comments</comments>
		<pubDate>Mon, 10 Apr 2006 18:39:44 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
	<category>Otros Informática</category>
	<category>CSS</category>
	<category>Otros diseño web</category>
		<guid>http://www.eslomas.com/index.php/archives/2006/04/10/consulta-diversas-apis-con-ajax/</guid>
		<description><![CDATA[Este es un ejemplo más de las aplicaciones basadas en AJAX que poco a poco van apareciendo aprovechando sus posibilidades. Se trata de gotAPI.com [1], y lo que nos permite es acceder al API de diversas tecnologías como HTML, CSS, JavaScript, PHP, MySQL, Java&#8230; La aplicación es muy sencilla de utilizar, dispone de unas pestañas que nos permiten seleccionar el API del que queremos obtener información, tras lo que en el lateral izquierdo se nos carga una lista con todos los elementos disponibles. Podemos acceder a la información de cada elemento clicando sobre él, o utilizando la caja de búsqueda, la cual, al más estilo 100% puro AJAX, nos sugiere elementos conforme vamos escribiendo.


[1] http://www.gotapi.com/]]></description>
			<content:encoded><![CDATA[<p><img src="/upload/2006/04/gotapi.gif" class="alignleft" alt="" />Este es un ejemplo más de las aplicaciones basadas en AJAX que poco a poco van apareciendo aprovechando sus posibilidades. Se trata de <a href="http://www.gotapi.com/" class="external" target="_blank">gotAPI.com</a>, y lo que nos permite es acceder al <acronym title="Application Programming Interface">API</acronym> de diversas tecnologías como <acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym>, JavaScript, <acronym title="Hypertext PreProcessing">PHP</acronym>, MySQL, Java&#8230; La aplicación es muy sencilla de utilizar, dispone de unas pestañas que nos permiten seleccionar el <acronym title="Application Programming Interface">API</acronym> del que queremos obtener información, tras lo que en el lateral izquierdo se nos carga una lista con todos los elementos disponibles. Podemos acceder a la información de cada elemento clicando sobre él, o utilizando la caja de búsqueda, la cual, al más estilo 100% puro AJAX, nos sugiere elementos conforme vamos escribiendo.
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2006/04/10/consulta-diversas-apis-con-ajax/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Cargador de clases en PHP4</title>
		<link>http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/</link>
		<comments>http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/#comments</comments>
		<pubDate>Thu, 23 Feb 2006 07:00:02 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
		<guid>http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/</guid>
		<description><![CDATA[En este artículo voy a presentar una clase que permite independizar en gran medida una aplicación de las ubicaciones en las que están las clases que la componen. En lenguajes como Java o C# esto es algo completamente transparente, pero no así en PHP4.
   En PHP4 cuando se requiere utilizar una clase es necesario haberla incluido antes en nuestra aplicación con un require o un include, indicando la ruta del archivo en la que está amalcenado. Conforme crece el tamaño de las aplicaciones es habitual que también crezca el número de clases existentes y las dependencias que hay entre los diferentes programas que forman la aplicación y ellas. Esto produce que si en algún momento necesitamos mover una clase de sitio tengamos que tocar un buen número de archivos, y casi siempre con la mala suerte de que siempre se olvida alguno que va a fallar en el momento más inesperado.
   Una solución habitual suele ser centralizar en un único archivo la inclusión de todas las clases que forman la aplicación, sin embargo, normalmente en cada petición de página se suele necesitar únicamente un subconjunto de todas las clases disponibles, por lo que considero que esto es muy ineficiente, aparte de que nos obliga a hacer un mantenimiento bastante tedioso de este archivo.
   La solución que suelo utilizar es disponer de una clase, de nombre ClassLoader, que me abstrae de la ubicación real de las clases y que es la encargada de incluirlas cuando se lo solicito. De esta forma, desde el código de la aplicación se le pide que se cargue una determinada clase y ella hace la inclusión real del archivo, para lo cual es necesario saber la ubicación de cada clase. En esta ocasión esta información se obtiene de forma automática a partir de unas indicaciones, para lo cual la clase realiza una búsqueda de archivos susceptibles de ser clases a partir de unas ubicaciones que hay que indicarle y almacena esta información en caché, de forma que no sea necesario realizar la búsqueda en cada petición de página. 
    (more&#8230;) [1]


[1] http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/#more-243]]></description>
			<content:encoded><![CDATA[<p>En este artículo voy a presentar una clase que permite independizar en gran medida una aplicación de las ubicaciones en las que están las clases que la componen. En lenguajes como Java o C# esto es algo completamente transparente, pero no así en PHP4.</p>
   <p>En PHP4 cuando se requiere utilizar una clase es necesario haberla incluido antes en nuestra aplicación con un <code>require</code> o un <code>include</code>, indicando la ruta del archivo en la que está amalcenado. Conforme crece el tamaño de las aplicaciones es habitual que también crezca el número de clases existentes y las dependencias que hay entre los diferentes programas que forman la aplicación y ellas. Esto produce que si en algún momento necesitamos mover una clase de sitio tengamos que tocar un buen número de archivos, y casi siempre con la mala suerte de que siempre se olvida alguno que va a fallar en el momento más inesperado.</p>
   <p>Una solución habitual suele ser centralizar en un único archivo la inclusión de todas las clases que forman la aplicación, sin embargo, normalmente en cada petición de página se suele necesitar únicamente un subconjunto de todas las clases disponibles, por lo que considero que esto es muy ineficiente, aparte de que nos obliga a hacer un mantenimiento bastante tedioso de este archivo.</p>
   <p>La solución que suelo utilizar es disponer de una clase, de nombre <b>ClassLoader</b>, que me abstrae de la ubicación real de las clases y que es la encargada de incluirlas cuando se lo solicito. De esta forma, desde el código de la aplicación se le pide que se cargue una determinada clase y ella hace la inclusión real del archivo, para lo cual es necesario saber la ubicación de cada clase. En esta ocasión esta información se obtiene de forma automática a partir de unas indicaciones, para lo cual la clase realiza una búsqueda de archivos susceptibles de ser clases a partir de unas ubicaciones que hay que indicarle y almacena esta información en caché, de forma que no sea necesario realizar la búsqueda en cada petición de página. </p>
   <p> <a href="http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/#more-243"></a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Programación orientada a objetos en PHP4</title>
		<link>http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/</link>
		<comments>http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/#comments</comments>
		<pubDate>Mon, 09 Jan 2006 08:30:41 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
		<guid>http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/</guid>
		<description><![CDATA[Una de las principales ventajas que ofrece PHP como lenguaje de desarrollo de aplicaciones web, es su flexibilidad, que nos permite hacer una gran cantidad de cosas de forma muy rápida. Sin embargo, conforme se van desarrollando aplicaciones más grandes, merece la pena dedicar tiempo a estructurar bien la aplicación, con el fin de hacerla lo más modular, reutilizable y mantenible que sea posible. Al igual que en otros lenguajes, la orientación a objetos nos puede ayudar en gran medida a conseguir estos objetivos.
   Lamentablemente PHP, en su versión 4, no se puede considerar que sea completamente un lenguaje orientado a objetos, ya que carece de algunas características básicas como ocultación de información y sobrecarga de métodos, pero sin embargo es posible conseguir estas características con un poco de rigor. Aparte de esto, nos encontraremos con una serie de problemas, principalmente debido a la forma en que maneja las referencias, que puede hacer que nos volvamos locos en más de una ocasión si no tenemos claro cómo funcionan y no somos estrictos en su utilización.
   En este artículo no voy a explicar los fundamentos de la orientación a objetos, ya que de eso ya hay multitud de libros y artículos, voy a explicar únicamente las peculiaridades que tiene PHP 4 y cómo trabajar con ellas. Comienzo explicando brevemente cómo funcionan las referencias en las asignaciones y en las llamadas a funciones y métodos, y continúo dando alguna sugerencia para conseguir la ocultación de información y la sobrecarga de métodos en las clases, finalizando el artículo con una introducción a la serialización de objetos.
    (more&#8230;) [1]


[1] http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/#more-230]]></description>
			<content:encoded><![CDATA[<p>Una de las principales ventajas que ofrece <acronym title="Hypertext PreProcessing">PHP</acronym> como lenguaje de desarrollo de aplicaciones web, es su flexibilidad, que nos permite hacer una gran cantidad de cosas de forma muy rápida. Sin embargo, conforme se van desarrollando aplicaciones más grandes, merece la pena dedicar tiempo a estructurar bien la aplicación, con el fin de hacerla lo más modular, reutilizable y mantenible que sea posible. Al igual que en otros lenguajes, la orientación a objetos nos puede ayudar en gran medida a conseguir estos objetivos.</p>
   <p>Lamentablemente <acronym title="Hypertext PreProcessing">PHP</acronym>, en su versión 4, no se puede considerar que sea completamente un lenguaje orientado a objetos, ya que carece de algunas características básicas como ocultación de información y sobrecarga de métodos, pero sin embargo es posible conseguir estas características con un poco de rigor. Aparte de esto, nos encontraremos con una serie de problemas, principalmente debido a la forma en que maneja las referencias, que puede hacer que nos volvamos locos en más de una ocasión si no tenemos claro cómo funcionan y no somos estrictos en su utilización.</p>
   <p>En este artículo no voy a explicar los fundamentos de la orientación a objetos, ya que de eso ya hay multitud de libros y artículos, voy a explicar únicamente las peculiaridades que tiene <b><acronym title="Hypertext PreProcessing">PHP</acronym> 4</b> y cómo trabajar con ellas. Comienzo explicando brevemente cómo funcionan las referencias en las asignaciones y en las llamadas a funciones y métodos, y continúo dando alguna sugerencia para conseguir la ocultación de información y la sobrecarga de métodos en las clases, finalizando el artículo con una introducción a la serialización de objetos.</p>
   <p> <a href="http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/#more-230"></a>
</p>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Próximos artículos de PHP</title>
		<link>http://www.eslomas.com/index.php/archives/2005/12/26/proximos-articulos-php/</link>
		<comments>http://www.eslomas.com/index.php/archives/2005/12/26/proximos-articulos-php/#comments</comments>
		<pubDate>Mon, 26 Dec 2005 11:25:52 +0000</pubDate>
		<dc:creator>Patxi</dc:creator>
		
	<category>PHP &amp; MySQL</category>
		<guid>http://www.eslomas.com/index.php/archives/2005/12/26/proximos-articulos-php/</guid>
		<description><![CDATA[En el próximo par de meses tengo previsto publicar una serie de artículos que estoy preparando sobre PHP, y que serán posiblemente los últimos que publique relacionados con la versión 4 de este lenguaje, ya que tengo previsto comenzar a utilizar PHP5 en todos los futuros proyectos desde ya.
   Detallo a continuación los artículos que tengo previsto realizar por si alguien tiene alguna sugerencia que aportarme.
   
   Programación Orientada a Objetos [1]: PHP4 no es un lenguaje orientado a objetos puro, ni mucho menos, más bien parece que la orientación a objetos se la hayan metido con calzador, pero en cualquier caso, el utilizar este paradigma permite abordar el desarrollo de aplicaciones con mayores probabilidades de éxito, sobretodo conforme incrementa su tamaño. En este artículo explicaré una serie de peculiaridades muy importantes que hay que tener en cuenta.  Artículo ya publicado [2]
   Control personalizado de errores: es posible con PHP mostrar información en los errores de forma similar a como sucede en otros lenguajes como ASP.NET o Java, mostrando el punto exacto de error y una pila de las llamadas producidas. En este artículo explicaré como realizar esto utilizando una clase a tal efecto.
   Cargador de clases [3]: si te ha tocado programar una aplicación de tamaño medio en PHP, seguramente habrás utilizado la orientación a objetos. Uno de los problemas que tiene PHP  con la orientación a objetos, es que al ser interpretado, es necesario incluir el archivo que define una clase antes de utilizarla, lo cual produce un alto acoplamiento con la ruta física en que éstas están almacenadas. En este artículo explicaré una clase que utilizo desde hace tiempo y que me permite abstraerme de este problema, permitíendome incluso reorganizar de forma completamente transparente la estructura física de carpetas en las que están almacenadas las clases.
   Sistemas de log de mensajes: una herramienta de log suele ser de mucha utilidad para la depuración de las aplicaciones, pero también para controlar el estado de una aplicación en producción. Hay diversas soluciones, desde montarnos una sencilla utilidad que escriba en un archivo, hasta la sofisticación de log4php, similar a log4j y log4net, pasando por un termino medio como PEAR::log
   Cache de datos, bloques de html y páginas web: uno de los grandes problemas de PHP, si no el mayor, aunque para algunos puede ser una ventaja, es que no mantiene el estado entre peticiones, lo cual produce que en cada petición comencemos desde cero y no podamos utilizar cosas como pools de conexiones, o tengamos que regenerar continuamente objetos que en otras tecnologías programaríamos como singletons. Una forma de minimizar esta situación es mediante la utilización de cachés. Estas cachés se pueden utilizar para guardar objetos serializados, bloques generados de html e incluso páginas enteras.
   Acceso a bases de datos: es habitual al desarrollar aplicaciones web de tamaño medio buscar cierta independencia de la base de datos, previendo futuras modificaciones o necesidades de portabilidad. La utilización de conjuntos de clases que nos abstraen de las funciones específicas de PHP nos permiten está abstracción, a la vez que nos ofrecen un marco de desarrollo orientado a objetos más o menos homogéneo con otras tecnologías. En este artículo explicaré la que a mi parecer está mejor diseñada y es más equilibrada, PEAR::DB, y explicaré también una posible adaptación específica para el tratamiento de los autoincrementales en MySQL, lo cual considero que no tiene correctamente resuelto.
   Un pequeño modelo ORM: este artículo aún no estoy muy seguro de querer embarcarme en hacerlo debido a su complejidad, pero lo comento aquí por si acaso. Al hacer aplicaciones orientadas a objetos un problema habitual es el como modelar los objetos y sus relaciones, tal como las tenemos en PHP, en una base de datos relacional. En este artículo explicaré las ventajas de utilizar un modelo de persistencia que permita afrontar la lectura, escritura y actualización de objetos de una forma homogénea y hasta cierto punto independiente del sistema de almacenamiento. En cualquier caso no pretenderá ser un completo sistema de persistencia como Hibernate o similares, dadas las limitaciones de PHP y lo complejo que sería desarrollarlo.
   

[1] http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/
[2] http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/
[3] http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/]]></description>
			<content:encoded><![CDATA[<p>En el próximo par de meses tengo previsto publicar una serie de artículos que estoy preparando sobre <acronym title="Hypertext PreProcessing">PHP</acronym>, y que serán posiblemente los últimos que publique relacionados con la versión 4 de este lenguaje, ya que tengo previsto comenzar a utilizar PHP5 en todos los futuros proyectos desde ya.</p>
   <p>Detallo a continuación los artículos que tengo previsto realizar por si alguien tiene alguna sugerencia que aportarme.</p>
   <ul>
   <li><b><a href="http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/">Programación Orientada a Objetos</a></b>: PHP4 no es un lenguaje orientado a objetos puro, ni mucho menos, más bien parece que la orientación a objetos se la hayan metido con calzador, pero en cualquier caso, el utilizar este paradigma permite abordar el desarrollo de aplicaciones con mayores probabilidades de éxito, sobretodo conforme incrementa su tamaño. En este artículo explicaré una serie de peculiaridades muy importantes que hay que tener en cuenta.  <b><a href="http://www.eslomas.com/index.php/archives/2006/01/09/programacion-orientada-a-objetos-en-php4/">Artículo ya publicado</a></b></li>
   <li><b>Control personalizado de errores</b>: es posible con <acronym title="Hypertext PreProcessing">PHP</acronym> mostrar información en los errores de forma similar a como sucede en otros lenguajes como ASP.NET o Java, mostrando el punto exacto de error y una pila de las llamadas producidas. En este artículo explicaré como realizar esto utilizando una clase a tal efecto.</li>
   <li><b><a href="http://www.eslomas.com/index.php/archives/2006/02/23/cargador-de-clases-en-php4/">Cargador de clases</a></b>: si te ha tocado programar una aplicación de tamaño medio en <acronym title="Hypertext PreProcessing">PHP</acronym>, seguramente habrás utilizado la orientación a objetos. Uno de los problemas que tiene <acronym title="Hypertext PreProcessing">PHP</acronym>  con la orientación a objetos, es que al ser interpretado, es necesario incluir el archivo que define una clase antes de utilizarla, lo cual produce un alto acoplamiento con la ruta física en que éstas están almacenadas. En este artículo explicaré una clase que utilizo desde hace tiempo y que me permite abstraerme de este problema, permitíendome incluso reorganizar de forma completamente transparente la estructura física de carpetas en las que están almacenadas las clases.</li>
   <li><b>Sistemas de log de mensajes</b>: una herramienta de log suele ser de mucha utilidad para la depuración de las aplicaciones, pero también para controlar el estado de una aplicación en producción. Hay diversas soluciones, desde montarnos una sencilla utilidad que escriba en un archivo, hasta la sofisticación de log4php, similar a log4j y log4net, pasando por un termino medio como PEAR::log</li>
   <li><b>Cache de datos, bloques de html y páginas web</b>: uno de los grandes problemas de <acronym title="Hypertext PreProcessing">PHP</acronym>, si no el mayor, aunque para algunos puede ser una ventaja, es que no mantiene el estado entre peticiones, lo cual produce que en cada petición comencemos desde cero y no podamos utilizar cosas como pools de conexiones, o tengamos que regenerar continuamente objetos que en otras tecnologías programaríamos como singletons. Una forma de minimizar esta situación es mediante la utilización de cachés. Estas cachés se pueden utilizar para guardar objetos serializados, bloques generados de html e incluso páginas enteras.</li>
   <li><b>Acceso a bases de datos</b>: es habitual al desarrollar aplicaciones web de tamaño medio buscar cierta independencia de la base de datos, previendo futuras modificaciones o necesidades de portabilidad. La utilización de conjuntos de clases que nos abstraen de las funciones específicas de <acronym title="Hypertext PreProcessing">PHP</acronym> nos permiten está abstracción, a la vez que nos ofrecen un marco de desarrollo orientado a objetos más o menos homogéneo con otras tecnologías. En este artículo explicaré la que a mi parecer está mejor diseñada y es más equilibrada, PEAR::DB, y explicaré también una posible adaptación específica para el tratamiento de los autoincrementales en MySQL, lo cual considero que no tiene correctamente resuelto.</li>
   <li><b>Un pequeño modelo ORM</b>: este artículo aún no estoy muy seguro de querer embarcarme en hacerlo debido a su complejidad, pero lo comento aquí por si acaso. Al hacer aplicaciones orientadas a objetos un problema habitual es el como modelar los objetos y sus relaciones, tal como las tenemos en <acronym title="Hypertext PreProcessing">PHP</acronym>, en una base de datos relacional. En este artículo explicaré las ventajas de utilizar un modelo de persistencia que permita afrontar la lectura, escritura y actualización de objetos de una forma homogénea y hasta cierto punto independiente del sistema de almacenamiento. En cualquier caso no pretenderá ser un completo sistema de persistencia como Hibernate o similares, dadas las limitaciones de <acronym title="Hypertext PreProcessing">PHP</acronym> y lo complejo que sería desarrollarlo.</li>
   </ul>]]></content:encoded>
			<wfw:commentRSS>http://www.eslomas.com/index.php/archives/2005/12/26/proximos-articulos-php/feed/</wfw:commentRSS>
	</item>
	</channel>
</rss>
