php


3
abr 12

RESTful API Frameworks en PHP

No Gravatar
REST vs SOAP

RESTful services

La semana anterior liberé la versión 0.4.0 de Celestic y una cosa que había prometido y que al final no logré hacer era escribir una API en REST para  utilizarla desde equipos móviles.. Bueno, al menos hay una versión preliminar pero decidí no subirla a los respositorios de código porque eran pruebas .. y es que durante varios días estuve investigando y probando herramientas para el desarrollo de esta API, al final no utilicé ninguno de estos frameworks y estoy escribiendo mi propia extensión para Yii la cual funcionará tomando datos de los modelos y exportando los resultados a json y xml..

Entonces al grano, esta es una lista de frameworks o librerías que podrían ayudarte a construir tu propia API en REST sobre PHP ..

FRAPI – Fue una de mis primeras opciones.. pero después de pocos minutos revisando como instalarlo y configurarlo lo abandoné porque al ver que tenía una parte de administración y otra de consumo me desanimé.. en realidad lo que buscaba era algo más simple.. Desde la interfaz de administración y también consola se pueden crear acciones (esto viene hererado del MVC donde solicitas a un controlador una accion específica que termina siendo un método a ejecutarse).

APIFY – Muy parecido a Frapi, incluso al descomprimirlo vemos una estructura de carpetas tipo MVC.. lo probé pero por alguna razón que aun desconozco nunca funcionó.. su documentación es muy escasa.. en realidad toma muchas cosas de Zend Framework y la librería base para crear REST se reduce a clases Request y Response.

Recess – No tuve oportunidad de probarlo a fondo, al igual que los demás utiliza el patrón de diseño MVC, su interfaz para el desarrollo del servicio esta basado en web a través del navegador. Creo que es de los mejores, pero tiene bastantes archivos y eso no me gustó mucho. Utiliza PDO y mapeo de basee de datos, punto negativo creo que son las consultas entre tablas anidadas.

Slim – No tuve ganas de probarlo, aunque a diferencia de los demás Slim no es un framework, sino más bien una librería o un set de librerías.. Me gustó cuando ví el código pero me desanimó el hecho de que utilizan sus propias rutas y la ausencia de activeRecords.

Tonic – También es una librería, es bastante simple para lo que buscaba y de las cosas que alcancé a probar pues de eso decidí mejor construir mis propias clases para generar REST, me dió la impresión de que me ahorra muy pocas cosas..

En general todos los frameworks y librerías son muy buenos para trabajar utilizando su propio esquema o estructura de carpetas.. Un punto negativo que tienen todos es que los que utilizan PDO y model mapping no es muy bueno con los join y las consultas complejas puede que sea un dolor de cabeza.. Ninguna utiliza un esquema de autenticación compleja como OAuth o al menos Basic Auth .. y si utilizan seguridad lo hacen mediante un parámetro extra que se envia por la url..

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

20
mar 12

Phalcon PHP

No Gravatar
Phalcon PHP

Phalcon PHP

Hace algunos días atras leía sobre un nuevo framework de PHP.. como si no hubieran muchos para elegir.. pero este específicamente tenía algo diferente que llamó mi atención.. lo guarde en mis favoritos y por fin!!! este fin de semana pude probarlo.

Pues bien, este nuevo framework se llama Phalcon PHP, esta escríto en C y funciona como una extensión adicional al lenguaje PHP utilizando el patrón de diseño MVC .. lo más interesante de que presumen es la velocidad con que este framework funciona a diferencia de la competencia.

Como cultura general, PHP es un lenguaje interpretado, básicamente Apache que es el servidor debe traducir todo el código php y entregarlo al cliente en forma de HTML, lo que hace de PHP un lenguaje algunas veces lento.. buuu!!! si a eso le agregan el uso de frameworks pues puede que el desempeño se vea un poco afectado, ya que los frameworks deben cargar inicialmente un set de librerías para funcionar lo cual se traduce en tiempo de compilación de recursos extras. Phalcon siendo una extensión del lenguaje, se carga automáticamente de tal manera que ofrece casi las mismas funciones que los demás frameworks, o al menos para trabajar utilizando el patrón MVC.

Definitivamente el resultado es muy bueno, la respuesta del servidor es superior en comparación de los frameworks tradicionales, entre los puntos negativos de Phalcon es que quizás le falten muchas cosas para llegar al nivel de CodeIgniter, Zend o Yii .. digamos algunas validaciones sobre los modelos, uso de eventos sobre el controlador, actions, etc..  y sobre todo documentación (porque hay cosas que no estan muy claras como el uso de las relaciones :S), pero la idea es genial.. Si tienen oportunidad de probarlo, no dejen de hacerlo.

Por cierto, el código lo encuentran en github.. hay que descargarlo y compilarlo.. además de la guía de instalación previa.. yo les recomendaría tener instalado build-essential..

Fuente: http://phalconphp.com/

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

24
ene 12

Remover elementos repetidos de un array php ruby java c# vb javascript

No Gravatar
Array remove duplicates items

Array remove duplicates items

Siguiendo la línea de publicar un post técnico y uno intelectual.. esta vez ha llegado el momento del post téncico.. lo que por mi actividad es muy fácil de escribirlo.. Esta entrada esta basada en la experiencia que tengo sobre algunos lenguajes y algo que es muy común de hacer y que muchos programadores escriben a su manera, unos porque no conocen el método y otros porque les gusta tener el control del código.

Este ejemplo se basa en eliminar los elementos duplicados de un arreglo, por ejemplo: (‘a’, ‘b’, ‘c’, ‘b’, ‘c’, ‘d’)

Php

$arreglo = array('a', 'b', 'c', 'b', 'c', 'd');
$filtro = array_unique($arreglo);

Ruby

arreglo = ['a', 'b', 'c', 'b', 'c', 'd']
filtro = arreglo.uniq

Java

Object[] arreglo = {'a', 'b', 'c', 'b', 'c', 'd'};
Set<Object> unst = new HashSet<Object>(Arrays.asList(arreglo));
Object[] filtro = unst.toArray();

C#

string[] arreglo = {'a', 'b', 'c', 'b', 'c', 'd'};
string[] filtro = arreglo.Distinct().ToArray();

Javascript

Array.prototype.unique = function() {
    var el = this.concat().sort();
    for (var i = 1; i < el.length; ) {
        if (el[i-1] === el[i])
            el.splice(i,1);
        else
            i++;
    }
    return el;
}
var filtro = ['a', 'b', 'c', 'b', 'c', 'd'].unique();

MaxScript

arreglo = #('a', 'b', 'c', 'b', 'c', 'd')
for i in arreglo.count to 1 by -1 do
(
    id = findItem arreglo arreglo[i]
    if (id != i) do deleteItem arreglo i
)

Seguramente hay muchas otras maneras de eliminar los elementos duplicados en los arreglos.. para lenguajes como maxscript, javascript o java.. pero al final se trata de lograr desarrollar la funcionalidad deseada.

El maestro de El Castor decia.. “No importa como lo hagas.. lo que importa es que funcione”..

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

Qbit Mexhico Blog is using WP-Gravatar