Si trabajas con PHP5 y POO te habrás topado en infinidad de ocasiones que has desarrollado una clase y debes instanciarla una y otra vez en cada una de las clases que crees posteriormente. Por ejemplo, una clase que se encargue de realizar la conexión con una base de datos. Como los datos de conexión de nuestra supuesta clase 'BaseDeDatos' no van a cambiar en ningún momento, ni necesitamos que el constructor de la clase mande diferentes parámetros con cada una de las instancias que hagamos, sería un desperdicio innecesario de memoria instanciarla en cada una de las clases que requieran acceso a la base de datos.

En este caso lo más lógico sería tener una instancia única siguiendo el patrón de diseño singleton, que garantizará que una clase sólo tenga una instancia con un punto de acceso global a ella.

Implementar este patrón es tan sencillo como crear un método que se encargará de crear un objeto de la clase si este no existe o devolver el objeto creado si existe una instancia previa. El constructor de la clase debe ser controlado con el atributo private para asegurarnos de que no se puedan crear instancias de forma directa.

Explicado sin nada de código puede parecer un poco confuso, así que mejor verlo en acción.

 
class BaseDeDatos{
//instancia de la clase
private static $instancia = null;

/**
* Constructor con atributo privado
*/

private function __construct(){
echo 'constructor';
}

/**
* Método para patrón singleton
* @return instancia del objeto
*/

public static function singleton(){
//si no existe instancia de la clase se crea y si existe se retorna la instancia existente
if( self::$instancia == null ){
self::$instancia = new self();
}
return self::$instancia;
}
}

//la primera vez se crea una instancia
$obj1 = BaseDeDatos::singleton();

//el resto de veces se retorna la instancia ya creada
$objX = BaseDeDatos::singleton();

Los juguetes de Toy Story vuelven  y lo harán aprovechando las tecnologías de proyección 3D para cines. Pixar explotará su potencial creativo al máximo para esta nueva entrega. Además se recreará Toy Story 2 con tecnologías de proyección 3D para cines a partir de octubre del 2009.

El propio John Lasseter, Director de PIXAR ha comentado que tanto las películas de Toy Story como sus personajes siempre "ocuparán un lugar muy especial en nuestros corazones", por eso les "emociona" poder hacer que el público disfrute de otra forma con este clásico. Un gran acontecimiento cinematográfico del que no podremos disfrutar hasta Junio de 2010.

toystory

Puedes ver el primer trailer de Toy Story 3 en la noticia completa.

Leer el resto del artículo

Cuando diseñamos una página web, ésta debe verse exactamente igual en todos los navegadores. Lograr la exactitud visual independientemente del navegador que usemos genera inmensos dolores de cabeza al pobre desdichado que le ha tocado maquetar. Estas incompatibilidades visuales suelen ser debidas por una mala codificación del xhtml o del css, o porque el navegador no a hace uso de los estándares web, como pasa con IE6.

Pero no todo es culpa de IE6 ni de que nuestro código xhtml no sea válido. Hay otras ocasiones en las que una misma etiqueta html tiene diferentes valores para distintos navegadores, no es habitual pero puede pasar. Por ejemplo, la etiqueta < img> si se encuentra dentro de etiqueta < a> en Internet Explorer se genera con un borde alrededor de la imagen y en Firefox se muestra sin ese borde (como debería ser).

Para evitar este tipo de diferencias la mejor solución es tener una hoja de estilos (CSS) base e independiente del diseño que vayamos a definir. Esta hoja resetearía los estilos para las etiquetas más habituales a unos valores por defecto. Así evitamos parte de esos errores de compatibilidad entre navegadores. aa

 
html, body, div, span,
applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
dd, dl, dt, li, ol, ul,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
font-weight: inherit;
font-style: inherit;
font-size: 100%;
line-height: 1;
font-family: inherit;
text-align: left;
vertical-align: baseline;
}
a img, :link img, :visited img {
border: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
ol, ul {
list-style: none;
}
q:before, q:after,
blockquote:before, blockquote:after {
content: "";
}
 
 

Código extraído de Meyerweb.com

 
  •  1 
 
Recibe los últimos artículos en tu email
  • bloglines
  • Google
  • Netvibes
  • MyYahoo
  • MyMsn
Artículos Destacados
Autores
Categorías
Archivo

2009 - PromineoStudios - Todos los derechos Reservados

Diseño con estándares web - XHTML CSS - Versión anterior del sitio