Cómo enviar XML a un WebService con PHP

Cómo enviar XML a un WebService con PHP

Cómo hacer para...
Para empezar, debemos responder una pregunta escencial: ¿se trata de un WebService de tipo SOAP o uno de tipo REST? ¡La forma de enviarlo en uno u otro caso será muy diferente! Otra historia es cómo recibir XML a través de WebServices desarrollados usando PHP... tema para otro post :) Cómo enviar XML a un WebService SOAP con PHP Como siempre, para el caso de que se trate de un webservice de tipo SOAP, usaremos la clase SOAPClient Tomemos como ejemplo este Servicio Web que tiene un solo método disponible (CustomerSearch), el cual recibe XML y devuelve XML. Tenemos dos alternativas para generar el XML que queremos enviar: Escribirlo explícitamente (o "a mano") Usar la clase SimpleXMLElement Si aún estás en dudas, no dudes más: usa la clase, te ahorrará una gran cantidad…
Leer más
Cómo exponer un WebService REST con PHP

Cómo exponer un WebService REST con PHP

Cómo hacer para...
¿Qué es un WebService? Ya en el artículo sobre cliente REST di una pequeña definición de un WebService, por si no lo leíste te lo cuento: Un WebService es una pequeña aplicación web diseñada para interactuar con otras aplicaciones (en lugar de hacerlo con personas). Las dos aplicaciones que se comunican toman el rol de: Servidor: quien expone el servicio Cliente: quien lo consume ¿Qué es REST? REST es un protocolo de intercambio de información basado en HTTP. ¿Cómo se implementa en PHP? Los servicios web basados en REST suelen ser mucho más fáciles de crear (y consumir) que los basados en SOAP. De hecho, cualquier aplicación PHP que hayas hecho podría ser un WebService REST! (Bueno… tal vez no uno muy útil, pero eso es otro tema :)). Te muestro un…
Leer más
Cómo exponer un WebService SOAP con PHP

Cómo exponer un WebService SOAP con PHP

Cómo hacer para...
¿Qué es un WebService? Ya en el artículo sobre cliente SOAP di una pequeña definición de un WebService, por si no lo leíste te lo cuento: Un WebService es una pequeña aplicación web diseñada para interactuar con otras aplicaciones (en lugar de hacerlo con personas). Las dos aplicaciones que se comunican toman el rol de: Servidor: quien expone el servicio Cliente: quien lo consume ¿Qué es SOAP? SOAP es un protocolo de intercambio de información basado en XML. ¿Cómo se implementa en PHP? Ahora que estamos claros con las definiciones veamos un ejemplo: server.php: <?php class MiClase { public function saludar() { return 'Hola ' . func_get_args()[0] . PHP_EOL; } } try { $server = new SoapServer( null, [ 'uri'=> 'http://localhost:8080/soap_server.php', ] ); $server->setClass('MiClase'); $server->handle(); } catch (SOAPFault $f) { print $f->faultstring;…
Leer más

Cómo eliminar registros antiguos usando PHP y MySQL

Cómo hacer para...
Me llega este correo de un ex alumno:   Mauro como estás? Espero que muy bien! Sigo con el proyecto del centro cultural y quisiera saber si hay alguna forma de generar un script en sql que me borre los eventos que cargue a los cuales ya les haya pasado la fecha. Saludos,   Si quisiéramos adherir estrictamente a la pregunta, la respuesta sería "Sí"... pero sería un poco mala persona si lo dejara ahí, ¿cierto? :) Voy a profundizar un poco para no dejar a nadie con la intriga. Una forma de resolver el problema desde sql (Asumo que se trata de MySQL) sería generar un procedimiento almacenado o directamente tener a mano una consulta que hiciera lo que se busca: borrar los eventos a los que les haya pasado…
Leer más
Cómo filtrar un arreglo multidimensional por clave en PHP

Cómo filtrar un arreglo multidimensional por clave en PHP

Cómo hacer para...
Me llegó esta pregunta a través de twitter: Veamos el arreglo en mayor detalle: Por lo que se ve, se trata de un array de arrays. El primer índice es por número y la segunda dimensión tiene índices string y, viendo el contenido del mismo entiendo que se trata del resultado de alguna consulta a una base de datos (Siendo que los elementos parecen tener la misma estructura y especialmente al haber un elemento llamado "id"). Muy bien, entonces el objetivo sería obtener sólo aquellos elementos en los cuales la columna "condial_39" vale 1, en este caso sería el array completo, pero obviamente este podría no ser el caso. Se me ocurren diferentes formas de lograr este objetivo: A la vieja usanza Simplemente se trata de hacer una recorrida del…
Leer más
Cómo tratar archivos comprimidos con PHP

Cómo tratar archivos comprimidos con PHP

Cómo hacer para...
Recientemente me tocó realizar una modificación a un sistema que había desarrollado para recibir un único archivo comprimido, en lugar de un conjunto de archivos en forma individual. Dejando de lado los ajustes hechos en el front-end (No fue gran cosa realmente, se trató de cambiar un formulario con 5 inputs por uno solo y, como lo había hecho usando el framework Symfony esa parte fue simple, ni tuve que tocar HTML), la parte interesante fue cómo procesar el archivo comprimido. Para empezar, algo que tuve que acordar con el usuario era el formato de compresión que íbamos a utilizar. Obviamente no es lo mismo descomprimir un archivo .rar que un .zip (Diferentes formatos, diferentes algoritmos de compresión, etc...). En mi caso no tuve problema porque tenía la posibilidad de definir…
Leer más
Cómo interactuar con MailChimp usando PHP

Cómo interactuar con MailChimp usando PHP

Cómo hacer para...
Uno de mis SaaS favoritos es MailChimp (El que uso para el envío de mis campañas de e-mail marketing y para algunos clientes también). Si bien su interface es algo rústica (A veces cuesta encontrar el modo de realizar ciertas tareas, sobre todo al comienzo cuando no se conoce bien), es sumamente funcional (Hasta tiene workflows automatizados). Pero, como siempre, las posibilidades que brinda de fábrica son más limitadas de lo que a un desarrollador le gustaría... afortunadamente, cuenta con una API muy buena que permite manipular todos los objetos del sistema y lograr algunas cosas que desde la interfaz web son complejas (o directamente imposibles). Algo que me sucedió recientemente (y que dio origen a este post) fue la necesidad de realizar un mismo envío (el cual incluyera el disparo de nuevos…
Leer más
Cómo generar archivos PDF con PHP

Cómo generar archivos PDF con PHP

Cómo hacer para...
Una necesidad bastante común en el desarrollo de aplicaciones basadas en web (Especialmente las que se usan dentro de ambientes corporativos) es la de emitir reportes. Una forma simple de resolver este problema es la generación de páginas html cuyo único objeto es ser impresas y dejar al usuario la decisión de guardarlas en lugar de imprimirlas. Si bien esta solución puede ser suficiente cuando se trata de emitir un reporte a un usuario, ciertamente no es lo ideal cuando se trata de intercambiarlo con algún otro sistema. Particularmente en este artículo voy a mostrarte algunas formas de generar archivos pdf usando PHP. Librería PDF de PHP Existe una extensión de PHP llamada PDF, la cual está basada en la librería PDFlib (Desafortunadamente, una librería propietaria). Esta librería debe ser instalada como una…
Leer más
Un redimensionador de imágenes eficiente hecho con PHP

Un redimensionador de imágenes eficiente hecho con PHP

Ejemplos
Un proyecto interesante que tuve la oportunidad de realizar hace unos años fue un sistema de procesamiento de imágenes. El desafío era lograr un servicio simple que permitiera escalar y rotar imágenes velozmente. Lo diseñé como un componente separado de la aplicación principal (Una red social de viajes) para poder instalarlo sin inconvenientes en un servidor diferente (y eventualmente poder vincularlo a otros proyectos). Por entonces me pareció una buena idea montarlo sobre una arquitectura RESTFul y, como era un proyecto muy simple y acotado (y tenía ganas de aprender algo nuevo de paso) decidí usar un framework especialmente diseñado para estos efectos: Tonic. Lo más importante como siempre: ¿qué nombre ponerle a una aplicación como esta? Mucho de fotografía no sé, pero buscando un poco me pareció que Bresson podía…
Leer más

Cómo consumir un WebService REST con PHP

Cómo hacer para...
Un poco de background como para asegurarnos de que hablamos de lo mismo Qué es un webservice Un webservice (o servicio web) es una forma de integrar aplicaciones web. Básicamente se trata de un servidor que expone parte de su funcionalidad para que sus clientes (que generalmente son otros servidores de diferentes aplicaciones) puedan utilizarlas. Las principales ventajas de usar web services son: La posibilidad de valernos de la capacidad instalada (¡y mantenida!) por terceros La facilidad para extender la funcionalidad de nuestra aplicación (Basta con realizar las llamadas al servicio web que deseamos) La principal desventaja de usar este enfoque es que dependemos de servicios de terceros que, salvo en casos muy puntuales, no podemos controlar. Ejemplos de webservices: Autenticación de usuarios vía Facebook, Google, Twitter, etc... Generación de…
Leer más