Archivo para la categoría ‘PHP’

Mapeo Relacional de Objetos (ORM) en PHP

En la programación orientada a objetos siempre se debe lidiar con que a la hora de comunicarse con la base de datos se debe recurrir a convertir nuestros objetos a datos planos (cadenas, o enteros). Para eso existen las librerías de Mapeo Relacional de Objetos (mas conocida por sus siglas en inglés como ORM) que se encargan de, como su nombre lo indican, mapear las bases de datos de manera tal que trabajemos con ellas como si fueran mas objetos de nuestro desarrollo.
Y es acá que voy a nombrar algunas de estas librerías de PHP que se encargan de generar el código necesario para comunicarse con nuestras bases de datos.
Por supuesto hay frameworks completos que traen por default este mapeo como CakePHP, CodeIgniter, Symfony, etc, los cuales no incluyo en esta lista.

POG
PHP Object Generator: es uno de los mas conocidos, y no en vano, ya que el generador online es excelente, uno ingresa el nombre del objeto y las columnas de la tabla a la que se desea mapear el objeto. Tiene soporte para PHP4 y PHP5.

Doctrine
Doctrine: esta realizada para correr únicamente en PHP5. Utiliza un sistema de queries personalizados que devuelven el objeto con la información de la base de datos:

Junction PHP
Junction PHP: es una librería relativamente nueva (que todavía no está muy bien documentada). Se ve interesante, no alcancé a probarla aún.

ADOdb Active Record
ADOdb Active Record: ADOdb es una librería de abstracción muy reconocida desde hace años, y no podía faltar que alguien realizara un plugin (o algo así) que permina el manejo de ORM usando la misma librería para conexión. ADOdb Active Record, utiliza el método de Active Record y no difiere mucho de las otras alternativas.

EZPDO
EZPDO: es una de las mas completas y activamente desarrolladas librerias. Algo curioso de esta librería es que utiliza los comentarios para indicar relaciones y tipos de datos de cada objeto. Vale la pena tenerla en cuenta.

PEAR DB_DataObject
DB_DataObject: esta librería es un proyecto dependiente del framework PEAR, posee funciones genéricas para todo tipo de consulta desde los objetos sin tener que manipular demasiado los queries SQL. Es bastante avanzada.

Propel
Propel: es una de las mas antiguas y mejor documentada. Está muy completa y hasta incluye validación.

Podés encontrar mas en del.icio.us.

Akelos, Ruby on Rails en PHP

Akelos.org

Akelos, es un framework para PHP basado íntegramente en Ruby on Rails. Estoy bastante metido con CakePHP y Django, pero la verdad que Akelos promete mucho y me parece muy bueno un framework con la simplicidad de Ruby on Rails y la potencia, y estabilidad, de PHP.
Miren el screencast que está muy bien explicado como hacer un blog en 20 minutos.

Voy a tratar de seguir de cerca el proyecto para ver como evoluciona, ya que todavía es una versión muy nueva.

Por lo pronto me gustaría que en vez de prototype y scriptaculous use jQuery para la parte de Web2.0, pero es fácil de integrar.

La Consola de CakePHP

Que grosa que esta la consola de CakePHP.
Que es la consola? Bueno, una forma de poder ver el funcionamiento del sitio desde atrás, para acceder a los datos directamente como los accederá CakePHP en nuestro sitio. Usando las mismas funciones que usaremos en nuestros modelos.

Miren el screencast de ejemplo acá. Se zarpa.
Consola

Link: @TheKeyboard
Via: cakebaker

Clases y Librerias Esenciales en PHP

Muchas veces necesitamos hacer algún script rápido o algo custom que no se justifica utilizar un framework como CakePHP (aunque se pueden instalar como helpers o componentes del mismo), es aquí cuando nos conviene utilizar librerías o clases para simplificar (y/o asegurar) nuestro desarrollo.

Estas son algunas de las clases que uso en estos casos. Sin un orden en particular, solo las que encontré en mis bookmarks.

SwiftMailer: Cuando notamos que LibMail queda chico y phpMailer viejo.

ezSQL: Una clase para trabajar con bases de datos, sinceramente prefiero la DB de PEAR, pero esta tiene sus cositas, otra es la ADOdb (o ADOdb Lite).

Logger: Porque no queremos que nadie sepa de nuestros errores, o debug.

JSON-PHP: Porque JSON es muy sexy.

phpsprockets: A veces el generar HTML suele ser una tarea tediosa.

eZComponents: Varios componentes que cumplen con lo que prometen: Archive, Cache, Configuration, Debug, EventLog, Feed, ImageConversion, etc.

GeSHi: Para mostrar tu código con colores bonitos.

SimplePie: El mejor parser de RSS y feeds, lejos.

JpGraph: Estadisticas? Ok, gráficos. Otra puede ser esta. Después sino existen las Sparklines, para pequeños gráficos.

FeedCreator: Para crear feeds RSS de manera fácil.

spyc: YAML al alcance de tu PHP.

DomPDF: Convertir HTML a PDF, nunca fue tan fácil.

FPDF: Porque no todo se basa en HTML, esta librería permite generar PDF pasandole coordenadas métricas, especial para impresión.

XML-RPC: La infaltable e indiscutible librería server/cliente de XML-RPC, para quienes les gusta dar un poquito mas de lo que se ve.

XDebug: Para ver que está pasando en nuestro desarrollo. (Otra dBug, un poco mas Web2.0)

Bunny RegEx: Regular Expressions para idiotas (muy útil para mí, claro).

class.upload.php: Para subir y manipular imagenes.

Y acá los de PEAR que merecen una sección especial:
-Calendar: como su nombre lo indica, un montón de utilidades para trabajar con calendarios.
-Date: nunca mas tareas con fechas complicadas
-Text_CAPTCHA: para los spammers con amor.
-Text_Password: para la creación de contraseñas con onda.
-XML_Parser: para esas cositas que los programadores odiamos de XML. (Aguante JSON!)
-DB: para trabajar con bases de datos con un poco mas de seguridad que lo usual.
-HTML_QuickForm: para la creación, validación y proceso de formularios.
-Cache_Lite: a veces necesitamos ser un poco generosos con nuestro servidor.

Una gran utilidad es el PHP Object Generator, que es una aplicación que en base a los parámetros de la base de datos y nombre de objetos que le indiques genera el código PHP para manejar dicha base de datos.

Seguramente me olvido de alguna, pero bueno, todo no se puede.

Contame cuales usas vos.

phpinfo() vs cakeinfo()

Todos conocemos la función phpinfo() de PHP que nos ofrece información sobre la instalación de PHP en el sistema.
Bueno, me topé con esta nueva función para CakePHP, cakeinfo(). Que, cómo phpinfo(), nos brinda detallada información, en este caso del proyecto actual en CakePHP. Información sobre los modelos y constructores corriendo, helpers en la instalación, etc.
Funciona tan solo agregando el archivo cakeinfo.php en el directorio de la app/root.

La función fue creada por Masashi Shinbara, y se puede ver en funcionamiento acá.

Via: cakebaker.

Integrando Joomla en CakePHP

En Giga Promoters explican como poner en funcionamiento Joomla dentro de una instalación de CakePHP, como bien me aclara Mariano en un comentario, es al reves, el tema es integrar una instalación de CakePHP dentro de Joomla, como un módulo, con muy pocos cambios.

Para quienes no conozcan, Joomla es un CMS que está en boca de muchos hoy en día, no lo he probado en detalle pero lo poco que lo probé (lo he instalado en un sitio) fue suficiente como para ponerme en duda en cuanto a que utilizar la próxima vez, Drupal o Joomla.

Aquí tienen el articulo.

Además tienen un lindo articulo sobre 10 preguntas y respuestas que se hace la gente sobre CakePHP.

Link: Jake

CakePHP y OpenID

Desde hace ya un buen tiempo que estoy usando OpenID en varios sitios que permiten loguearte usando este sistema.
Para quienes no sepan que es OpenID, puedo definirlo en unas palabras como: un sistema de autenticación descentralizado y gratuito que permite tener una misma identidad en una vasta cantidad de sitios o sistemas. Muchos dirán: -”Ah, como passport.net”. A lo que respondo: -”Jaja, si, claro”…
Y no hace mucho que se me ocurrió implementarlo en los sistemas que hacemos en la compañía o bien para mis proyectos personales, pero por cuestión de tiempo entre otras cosas, lo dejé de lado.

Ahora, en cakebaker publicaron la forma de integrar el sistema OpenID en CakePHP, lo cual me parece increíble y le voy a dar un buen uso.

Link: cakebaker - CakePHP and OpenID