El polimorfismo - php

Jul 10 2010

El polimorfismo permite a un mismo nombre de método representar código diferente, en consecuencia puede expresar muchos comportamientos distintos.

Por ejemplo, supongamos que un usuario puede elegir entre tener un perro o un leon; y también puede hacer correr al animal que eligió haciendole gastar al animal una cantidad determinada de energía que varía segun el animal elegido

Primero veamos este código, luego lo analizamos.

<?php

// creamos la clase abstracta
abstract class AnimalAbstract
{
protected $_energiaConsumida = 0;

Great Circle Calculation

Abr 23 2010

El problema es simple: encontrar puntos cercanos a un centro, en un radio de n kilometros. Esto parece simple, pero realmente puede ser complejo, tomando en cuenta que la tierra no es plana.
Asi que les dejo esta función, basada en los principios matematicos que pueden chequear en http://en.wikipedia.org/wiki/Great-circle_distance .


function getGreatCircleSql($lat, $long) {
    $extraSql =
    "(ATAN2(
        SQRT(
          POW(COS(RADIANS({$lat})) *

Cuando utilizar la herencia

Mar 14 2010

La herencia permite tomar una clase como base para crear una nueva clase. La nueva clase hereda todos los atributos y comportaminetos de la clase existente.

Muchas veces se hereda una clase con el solo objetivo de utilizar su implementación, lo cual en ocasiones es un error

¿Como saber entonces cuando utilizar la herencia?. Lo primero que uno debe considerar antes de heredar una clase es fijarse si la clase que hereda es del mismo tipo que la clase que pretende heredar.

Evitando el hotlinking (a.k.a. robo de ancho de banda)

Mar 10 2010

Se llama hotlinking a utilizar información (normalmente imágenes) que esta hosteadas en otro sitio. Un ejemplo común es pegar en un foro o blog, una imágen, y copiar directamente la Url de la original. Es decir, no bajar y luego subir, sino pegar la url.

Al acceder al sitio, se hace una conexion y una descarga desde el host donde esta la imágen, utilizandole ancho de banda, pero sin mostrar información del mismo. Para el visitante este proceso es invisible.

Es un efecto indeseado (salvo raras excepciones). Utilizado de esta manera, el hotlinking puede considerarse como robo de ancho de banda.

Limpiar caracteres especiales en php

Mar 4 2010

Esta función permite reemplazar los caracteres especiales por caracteres ASCII.

Por ejemplo la ñ se transforma en n, ó en o, etc.

<?php
function limpiarCaracteresEspeciales($string ){
    $string = htmlentities($string); 
    $string = preg_replace('/\&(.)[^;]*;/', '\\1', $string);
    return $string;
} 
?>

Ejemplo de uso:

<?php
$cadena = "¿Cuántos años tienes?";
echo limpiarCaracteresEspeciales($cadena); // iCuantos anos tienes?
?>

El resultado sería: iCuantos anos tienes?

Ordenar una matriz en forma personalizada en php

Mar 4 2010

En ocasiones es necesario ordenar una matriz siguiendo una regla determinada para lograr un resultado específico.

Para esto es necesario crear una funcion que compare los elementos de la matriz tomados de dos en dos. La función de comparación debe devolver un entero menor, igual o mayor que cero si se considera que el primer argumento debe ser, respectivamente, menor, igual o mayor que el segundo. Luego utilizamos la funcion usort().

Mayúsculas para caracteres especiales en php

Mar 3 2010

Esta función posibilita cambiar a mayúscula cualquier tipo de caracteres aun los especiales como ser los que tienen acentos y la ñ.

-


function str_to_upper($str){
   return strtr($str,
   "abcdefghijklmnopqrstuvwxyz".
   "\x9C\x9A\xE0\xE1\xE2\xE3".
   "\xE4\xE5\xE6\xE7\xE8\xE9".
   "\xEA\xEB\xEC\xED\xEE\xEF".
   "\xF0\xF1\xF2\xF3\xF4\xF5".
   "\xF6\xF8\xF9\xFA\xFB\xFC".
   "\xFD\xFE\xFF",
   "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
   "\x8C\x8A\xC0\xC1\xC2\xC3\xC4".
   "\xC5\xC6\xC7\xC8\xC9\xCA\xCB".
   "\xCC\xCD\xCE\xCF\xD0\xD1\xD2".

Generar código aleatorio con php

Ene 1 2010

Con esta simple función se puede generar códigos aletorios.

Muy útil para crear contreseñas aleatorias o códigos de verificacón entre otras cosas.

<?php
function generarCodigo($longitud) {
    $key = '';
    $pattern = '1234567890abcdefghijklmnopqrstuvwxyz';
    $max = strlen($pattern)-1;
    for($i=0;$i < $longitud;$i++) $key .= $pattern{mt_rand(0,$max)};
    return $key;
}

//Ejemplo de uso

echo generarCodigo(6); // genera un código de 6 caracteres de longitud.
?>