Tag Archives: php

Porque adoro PHP y no me gusta Java

Usando un caso practico muy común en mi trabajo que es consumir un servicio web, pretendo demostrar de forma breve (si Java me lo permite) con un ejemplo el por que adoro programar en PHP vs porque (casi literalmente) odio programar con Java.


Pasos para consumir un servicio web SOAP con PHP:

1. Asegurarme que mi instalacion de PHP cuenta con la extension php_soap.
2. Escribir el siguiente codigo:

<?php<br  /?>$client = new SoapClient("http://www.webservicex.net/globalweather.asmx?WSDL");<br />$response = $client->GetWeather(array('CityName'=>'Puebla','CountryName'=>'Mexico'));<br />echo $response->GetWeatherResult;<br /><br /><br />

3. Disfrutar :)

Pasos para consumir un servicio web SOAP con Java:

1. Usando Axis importar el WSDL para generar las diversas clases de java para consumir los servicios:

SET TMPCLASSPATH=%CLASSPATH%<br />SET ROOT=.lib<br />SET CLASSPATH=.<br />SET CLASSPATH=%CLASSPATH%;%ROOT%axis.jar<br />SET CLASSPATH=%CLASSPATH%;%ROOT%jaxrpc.jar<br />SET CLASSPATH=%CLASSPATH%;%ROOT%saaj.jar<br />SET CLASSPATH=%CLASSPATH%;%ROOT%commons-logging-1.0.4.jar<br />SET CLASSPATH=%CLASSPATH%;%ROOT%commons-discovery-0.2.jar<br />SET CLASSPATH=%CLASSPATH%;%ROOT%wsdl4j-1.5.1.jar<br />SET CLASSPATH=%CLASSPATH%;%ROOT%log4j-1.2.8.jar<br />java -cp %CLASSPATH% org.apache.axis.wsdl.WSDL2Java -v -o src http://www.webservicex.net/globalweather.asmx?WSDL<br />SET CLASSPATH=%TMPCLASSPATH%<br /><br />

2. Hacer proyecto Java en NetBeans (o su IDE de Java preferido) y agregar los JAR necesarios de Axis.
3. Copiar (si es que no se generaron ya en el lugar correcto) el código generado por Axis.

Escribir la siguiente clase en Java:

package weatherdemo;<br /><br />import NET.webserviceX.www.*;<br /><br />public class Main {<br /> private static GlobalWeatherSoapStub binding = null;<br /><br /> public static void main(String[] args) {<br />  String result = "";<br />  try {<br />   binding = (GlobalWeatherSoapStub) new GlobalWeatherLocator().getGlobalWeatherSoap();<br />  } catch (Exception ex1) {<br />   System.out.println(ex1.getMessage());<br />   return;<br />  }<br /><br />  try {<br />   result = binding.getWeather("Puebla", "Mexico");<br />  } catch (Exception ex2) {<br />   System.out.println(ex2.getMessage());<br />   return;<br />  }<br /><br />  System.out.println(result);<br />  return;<br /> }<br />}<br /><br />

4. Disfrutar… ?

Resultados

3 lineas de PHP contra cuantas de Java :D ?

PHP Short Tags

Trabajar con plantillas en nuestros proyectos ayuda a separar en capas la aplicación, dejando la lógica en clases independientes del HTML y la vista en plantillas. Cuando trabajamos con dichas plantillas siempre es recomendable dejar el HTML lo más limpio de código PHP posible pues esto facilita la lectura y mantenimiento. PHP entre sus opciones de configuración cuenta con una opción llamada Short Open Tags o Shrot Tags la cual nos ayuda a mantener limpio el HTML entre otras cosas. Esta configuración se puede activar editando el php.ini y de otras formas. Personalmente prefiero activarlo usando un .htaccess en la carpeta donde recidirá mi proyecto.


Para activar los Short Tags desde un htaccess basta con que en la carpeta de nuestro servidor Apache donde vaya a recidir nuestro código PHP crear (o editar si ya existe) el archivo .htaccess y agregar la siguiente linea de texto:

php_value short_open_tag 1

A continuación les dejo algunos ejemplos para mantener limpio el HTML cuando usemos plantillas usando dichos Short Tags.

Usa los Short Tags de PHP. Estos nos ahorran las letras “PHP” al abrir un bloque de codigo.

Sin Short Tags:

<?php codigo_php_aqui(); ??><br />

Con Short Tags:

<? codigo_php_aqui(); ??><br />

Si solo necesitas hacer un echo, usa la forma abreviada (requiere Sort Tags):

Echo normal sin Short Tags:

<?php echo $mi_variable; ??><br />

Echo abreviado:

<?= $mi_variable ??><br />

Si vas a hacer ciclos o condiciones, mezclalos de forma limpia:

FOREACH de forma “normal”:

<ul><br /><?php foreach ($arreglo as $elemento) { ??><br /><li><?php echo $elemento['valor'] ??></li><br /><?php } ??><br /></ul><br />

FOREACH de forma limpia:

<ul><br /><? foreach ($arreglo as $elemento): ??><br /><li><?= $elemento['valor'] ??></li><br /><? endforeach; ??><br /></ul><br />

IF de forma “normal”:

<?php if ($alguna_condicion == true) { ??><br /><h1>La condicion SI se cumple</h1><br /><?php } else { ??><br /><h1>La condicion NO se cumple</h1><br /><?php } ??><br />

IF de forma limpia:

<? if ($alguna_condicion == true): ??><br /><h1>La condicion SI se cumple</h1><br /><? else: ??><br /><h1>La condicion NO se cumple</h1><br /><? endif ??><br />

Flex + AMFPHP

En la academia de Flex que estoy dando hice un pequeño ejemplo para demostrar lo facil que es integrar Flex y PHP usando AMFPHP.

El ejemplo sencillo lo que hace es mostrar un DataGrid y una AreaChart con LineChart cuyos datos se van actualizando cada 1 segundo, dando la apariencia de un monitor de alguna clase de datos. Los datos son generados de forma aleatoria por PHP contando este con dos Servicios: initialLoad que genera 20 datos aleatorios y getAlert que genera un dato aleatorio.

Dejo disponible para su descarga el codigo completo de Flex y de PHP. Como consideraciones el codigo de Flex (realmente es solo el archivo Main.mxml) es un proyecto de FlashDevelop, pero puede copiarse la clase dentro de Flex/Flash Builder sin ningun problema. El codigo de PHP consta solo de las clases usadas, las cuales deberan descomprimirse en la carpeta services de AMFPHP.

El codigo de este ejemplo lo comparto bajo licencia BSD.

Creando una aplicación CRUD con Flex y PHP

Y listo quedo el fruto de la inspiración que me llego el fin de semana pasado :)

Es muy común el necesitar que una aplicación Flex se comunique con una base de datos. En esta guía enseño como hacer un ABC (Altas, Bajas, Cambios/Consultas) o en inglés CRUD (Create, Request, Update, Delete) desde cero usando Adobe Flex (con el framework Swiz) y PHP (con los frameworks AMFPHP y ADODB).

Debido a la longitud del contenido preferí dejarla como un archivo PDF y comprimirlo junto con el código fuente. El contenido del archivo ZIP es el siguiente:

    • www: Carpeta con todas las librerias de PHP usadas incluyendo AMFPHP, ADODB y el código de la guía

 

  • flex: Carpeta con todo el proyecto de Flex Builder

 

 

  • fpcrud.pdf: Guía en formato PDF.

 

 

El contenido de la guía esta bajo licencia Creative Commons Reconocimiento-No comercial-Compartir. El código fuente esta bajo licencia BSD.

http://dl.dropbox.com/u/4438871/fpcrud.zip