Febrero 22nd, 2010
Doctrine es un ORM(object relational mapper) que se ha vuelto muy popular en los últimos meses, la verdad es una herramienta que puede apoyar mucho nuestros desarrollos y es notable la cantidad de desarrolladores de Zend Framework o CodeIgniter que lo están incorporando, si bien, aprender Doctrine no es muy complejo, nunca está de más tener una guía de “Inicio Rápido”, y este post nos muestra de una manera muy sencilla como empezar a usar Doctrine… esta guía considera que Doctrine ya está funcionando en tu proyecto y de alguna manera sus clases están generadas(esto sería el paso 1, si creen que vale la pena podemos hacer un post al respecto)… de cualquier forma todo esto y mas se encuentra en la documentación de Doctrine, la cual esta en su sitio oficial.
Crear una conexión…
Doctrine_Manager::connection("mysql://user:pass@server/db", 'myconn');
Insertar registros
Objeto Record
Esta es la forma más usada y sencilla. Cuando el método save es llamado el nuevo registro es creado…
$u = new User();
$u->username = 'user';
$u->password = 'pass';
$u->save();
Metodo fromArray()
Existen ocasiones en los cuales los datos ya están en un arreglo.
$data = array(
'username' => 'user',
'password' => 'pass',
'email' => 'mail@mail.com'
);
$u = new User();
$u->fromArray($data);
$u->save();
Continuar leyendo…
Enero 7th, 2010
Pues parece ser que al fin, despues del gran avance que fue dar soporte a Symfony el dia de ayer se mostro un pequeño avance de lo que podria ser un completo soporte para ZF en NetBeans (aplicaciones se pueden realizar, pero hablamos de un soporte que nos facilite el uso y aproveche herramientas como ZendTool), esta es una noticia muy buena para muchos desarrolladores sobre todo para los que preferimos usar NetBeans sobre Eclipse (con todo y Zend Studio), en este articulo publicado por Tomas Mysik nos muestra como van los primeros avances y nos permite probarlo para ir depurando este modulo, cada vez son mas los desarrolladores de PHP que usan NetBeans y la verdad esta es una muy buena noticia, esperemos que el desarrollo sea rapido y lo tengamos para la version 6.9, saludos…

Diciembre 5th, 2009
Recientemente ha sido liberado una pequeña recopilación de post acerca de testing en PHP, estos artículos son de Giorgio Sironi quie parece tener bastante experiencia en esto del testeo y de TDD , sin duda es un material bastante recomendable, el documento lo pueden descargar directamente de su blog, viene con ejercicios y un capitulo extra sobre teoria de TDD, para mi gusto un buen recurso, ojala que Giorgio pueda continuar con un buen trabajo sobre el…

Noviembre 29th, 2009
Una de las características que mas extrañamos de apache cuando usamos IIS6 es el modulo de URL Rewrite (mod_rewrite), actualmente IIS7 ya cuenta con un modulo similar.
La necesidad de usar este modulo aparecía principalmente cuando usamos frameworks de PHP como por ejemplo Zend Framework, las alternativas eran instalar un programa de terceros o extender el framework para poder recibir variables GET normales (Algo que es bastante malo para la lectura, en lugar de tener http://mi pagina/user/search tendriamos http://mipagina/index.php?ctr=users&action=search, ademas se ve menos profesional y complica un poco el trabajo de los buscadores), sin embargo, he dado con un artículo de Rob Allen en el cual nos brinda una posibilidad extra: Usando una caracteristica de IIS6 para dirigir los errores 404 a una sola pagina y extendiendo un poco el metodo de ruteo, se obtiene una solucion bastante buena para este problema.

Quedan aun algunos problemas, sin embargo, Rob Allen resuelve todos estos problemas en su artículo y nos brinda un camino muy bueno a las limitantes de IIS6, este articulo esta hecho para Zend Framework, pero la idea se puede aplicar para muchos otros escenarios… saludos.
Noviembre 14th, 2009
Una de las tecnicas mas importantes dentro del desarrollo web es AJAX, esta tecnica de programación es muy poderosa, sin embargo tiene ciertas restricciones por seguridad, la mas importante de ellas es la llamada “same-origin policy” la cual no permite generar llamados hacia otros dominios (Cross domain)…
Ahora me he encontrado con una libreria muy interesante la cual nos permite realizar llamados AJAX cross domain, pero usando CSS (Ellos lo llaman AJACSS), la razon de esto es que la politca “same-origin” solo afecta los llamados hechos con el XmlHttpRequest, por esta razon ellos nos presentan CSSHttpRequest.
Tiene como limitante el que solo se pueden realizar llamados tipo GET y que la respuesta vendra codificada dentro de CSS, sin embargo ellos ya nos brindan librerias para codificar en Python, Ruby y PHP y para descodificar en Javascript, aqui les dejo un ejemplo de como seria el uso y en la pagina de los autores pueden encontrar un ejemplos, saludos…
CSSHttpRequest.get(
"http://www.nb.io/hacks/csshttprequest/hello-world/",
function(response) { alert(response); }
);
Respuesta:
#c0 { background: url(data:,Hola%20Mundo!); }
#c1 { background: url(data:,Este%20seria%20un%20ejemplo); }
Sitio oficial…
Septiembre 24th, 2009
Adminer es un administrador para MySQL del tipo de PHPMyAdmin, pero tiene una característica muy especial, usa un solo archivo, esto lo hace muy sencillo de instalar y distribuir, está listo para ser usado en 11 lenguajes entre ellos español y es fácilmente skineable usando CSS…

Usa las versiones PHP 4.3+ y MySQL 4.1+.
Sitio oficial…
Septiembre 7th, 2009
Cada vez es mas comun el uso de RSS dentro de nuestras aplicaciones y aunque basicamente se trata de XML, existen librerias que nos facilitan la vida y nos permiten tener menos complicaciones, en esta ocación les presento SimplePie una libreria muy util y una de las que mas ha crecido en los ultimos años…

Acepta multiples formatos de RSS y Atom, seguro les sera de mucha utilidad…
Sitio oficial…
Agosto 30th, 2009
La función __autoload es una de las mas útiles en PHP5 (aunque su desempeño es muchas veces cuestionado, ese no es el tema de esta entrada), nos permite definir un método para declarar nuestras clases, es decir, ya no tendremos que tener todos esos include y require, y el sistema automáticamente, al detectar que alguna clase no existe, disparara esta función (En la cual obviamente debemos realizar el include o require), todo bien hasta aqui, sin embargo esta función tiene una pequeña desventaja, no puede lanzar excepciones.
Afortunadamente existen algunas maneras de “cubrir” esta característica, el método más común (y el que yo uso) consiste en crear la clase que está buscando el autoload y después lanzamos la excepción desde esa clase, para esto haremos uso de la función eval y de __callstatic(Para cubrir llamados a métodos estáticos sin instanciar nada), aquí les un pequeño ejemplo:
function __autoload($class_name)
{
if(file_exist($class_name.'.php'))
{
include $class_name.'.php';
}
else
{
eval("
class $class_name
{
function __construct()
{
throw new Exception('La clase $class_name no existe', 1001);
}
static function __callstatic(\$m, \$args)
{
throw new Exception('La clase $class_name no existe', 1001);
}
}
");
}
return;
}
Espero sea útil… saludos…
Agosto 30th, 2009
jCart es un pequeño script e-commerce hecho con PHP y jQuery.
Nos brinda la funcionalidad básica de una tienda en línea incluyendo el carrito de compras, utiliza jQuery para darle una funcionalidad más dinámica por medio de Ajax aunque es completamente funcional con javascript deshabilitado.

Muy sencillo de adaptar a tu sitio, un recurso bastante útil…
Sitio oficial…
Agosto 16th, 2009
A medida en que avanzamos en esto del desarrollo web, aumenta la necesidad de monitorear nuestras paginas, es un hecho que cualquier compañia de hosting algunas veces falla y esto es hasta cierto punto normal, siempre y cuando se encuentre dentro de que contratamos.
Existen algunos servicios web que nos permmiten hacer esto pero aqui les presento un script para que ustedes puedan controlar su propio sistema de monitoreo, phpWatch es gratuito y nos permite monitorear cualquier cantidad de sitios web, ademas contar con un sistema de notificaciones SMS y correo electronico…

Cuenta con una interfaz muy sencilla y trabaja en base a un script que tenemos que configurar en CRON(Linux) o en el administrador de tareas(Windows), tambien menciona que provee una pequeña API para que otras aplicaciones se puedan conectar y usar la información…
Pagina oficial…