Archivo

Archivo para Julio, 2009

WebServices con Nusoap y CakePHP 1.2

Domingo, 5 de Julio de 2009 admin 6 comentarios

WebServices sin re-inventar la rueda

Me dispuse a crear un artículo sobre este tema, dado que me ha sido bastante complicado encontrar información al respecto y en general se proponian soluciones muy complejas que muchas veces no vienen al caso, uno busca una forma simple de hacer algo sin re inventar la rueda … asi que luego de buscar y buscar por varias horas me encontre con información interesante, pero que tenia links a archivos rotos y que tuve que indagar la web hasta dar con estos archivos y ademas estaba escrito para CakePHP 1.1 con lo cual tuve que realizar una serie de correcciones a estos archivos, nada complicado … en general cambiar la llamada a “Vendor()” por “App::import()” y ese tipo de cosas, tambien tuve que quitar un componente llamado “cacheObject” que aparentemente ya no existe en CakePHP 1.2 …

Lo cierto es que con algun esfuerzo logre hacer funcionar nusoap desde CakePHP con las venajas que esto representa y levantar un servicio web sin demaciadas complicaciones y muy compresible!

Comencemos

OK, manos a la obra, primeramente deberas de descargar los siguientes archivos:

1) soap.php.zip , este archivo debes descomprimirlo y colocarlo en “app/controllers/components
2) nusoap.zip, esta es la librería nusoap con algunos “retoques” para que funcione con Cake, descomprime y coloca la carpeta en “app/vendors

Ok, ya tenemos las herramientas necesarias para construir nuestro WebService asi que continuemos …. vamos a suponer que tenemos una tabla creada que se llama “users” que posee una lista de usuarios registrados, nuestra tabla users tiene dos campos, Id y Nombre, nuestro WebService será capaz de dado un Id retornarle al cliente su nombre, si ya se que no es gran cosa! pero lo importante es que podamos tener funcionando un WebService, hacer mas que esto será muy facil por que entenderemos perfectamente como funciona.

Nuestro siguiente paso es crear un “controller” que nos sirva de URL para nuestro WebService y tendrá el siguiente aspecto:

Archivo: userservices_controller.php

<?php
Configure::write(’debug’,0);
App::import(’Vendor’,'nusoap/web_services_controller’);

class UserServicesController extends WebServicesController
{
var $name=’UserServices’;
var $uses=array(’User’);
var $api=array(
    ’name’=>array(’doc’=>’Obtiene el Nombre de un Usuario’,
         ‘input’=>array(’user_id’=>’xsd:integer’),
                  ‘output’=>array(’return’=>’xsd:string’)),
   );

function name($user_id)
{
    $data=$this->User->findById($user_id);
 return $data['User']['Nombre'];

}
}
?>

Bien, eso es todo ! ya tenemos nuestro primer servicio web funcionando ! a no me crees? me parece lógico yo tampoco podía creerlo, pero para que me creas vamos a probar al pequeño, lo que primero deberías poder ver es la publicación del servicio, esto puedes hacerlo navegando la URL: http://localhost/tusitio/userservices, si aqui puedes ver la definición del servicio quiere decir que vamos bien ! si no es así entonces revisa los pasos anteriores.

Para aclarar mejor las cosas vamos a crear un pequeño soap cliente, para comprobar por nosotros mismos que ya esta funcional el servicio web.

Crearemos un “Controller” donde tendrémos un cliente “soap” el cual realizará consultas al servicio web que hemos creado es decir “consumira” este servicio web.

Archivo: wstest_controller.php

<?
class WstestController extends AppController{
 
 var $name = ‘Wstest’;
var $uses = null;
 var $components = array(’soap’);
 
 function nombre($user_id){
  $url=”
http://localhost/tusitio/userservices/“;
  $func=’name’;
  $param=array(’user_id’=>$user_id);
  $name=$this->soap->client($url,$func,$param);
  
  print “Resultado: “.$name;
  exit;
  $this->set(’name’,$name); // haríamos esto si quisieramos mostrar los datos en una vista, pero para el caso con el ”print” anterior nos alcanza  
 }
}
?>

Ok, para probar esto, ya deberíamos tener nuestra tabla users (id,Nombre) con algunos datos cargados. Solo nos queda llamar a la URL de nuestro controller “cliente” de la siguiente manera: http://localhost/tusitio/wstest/nombre/43

Esto debería mostrarnos en pantalla el nombre de nuestro usuario con Id 43, ya eres un desarrollador capaz de utilizar SOAP ;)

Saludos a la comunidad y si encuentran algun error en esto, por favor no dejen de avisarme así lo correjimos!

3.3.2 Producción

Sábado, 4 de Julio de 2009 admin 4 comentarios

Una instalación de producción es una manera más flexible de instalar Cake. Usar este método permite que un dominio entero se comporte como una aplicación CakePHP única. Este ejemplo te ayudará a installar Cake en cualquier sitio de tu sistema de ficheros y ponerlo disponible en http://www.ejemplo.com. Tener en cuenta que esta instalación puede requerir los privilegios para cambiar el DocumentRoot (raíz de documentos) en servidores web Apache.

Descomprime los contenidos del archivo Cake en un directorio a tu elección. Por motivos de ejemplo, asumimos que escoges instalar Cake en /cake_install. Tu configuración de producción se verá de la siguiente manera en el sistema de ficheros:

  • /cake_install/
    • /app
      • /webroot (este directorio es el establecido con la directiva DocumentRoot)
    • /cake
    • /vendors
    • /.htaccess
    • /index.php
    • /README


Los desarrolladores que usan Apache deberán establecer la directiva DocumentRoot para el dominio a:

 

DocumentRoot /cake_install/app/webroot

Si tu servidor web está configurado correctamente, deberías encontrar tu aplicación Cake accesible en http://www.ejemplo.com.

 

Fuente: book.cakephp.org

 

Categories: 3.3.2 Producción Tags:

3.3.1 Desarrollo

Sábado, 4 de Julio de 2009 admin Sin comentarios

Usar una instalación de desarrollo es el método más rápido para montar Cake. Este ejemplo te ayudará a instalar una aplicación de CakePHP y hacerla disponible enhttp://www.ejemplo.com/cake_1_2/. Asumimos para el fin de este ejemplo que tu raíz de documentos está establecido a /var/www/html.

Descomprime los contenidos del archivo Cake en /var/www/html. Ahora tienes una carpeta en tu raíz de documentos con un nombre dependiente de la versión que te has descargado (p.ej. cake_1.2.0.7962). Renombra esta carpeta a cake_1_2. Tu configuración de desarrollo será como la siguiente en el sistema de archivos:

  • /var/www/html
    • cake_1_2
      • /app
      • /cake
      • /vendors
      • .htaccess
      • /index.php
      • README

Si tu servidor web está configurado correctamente, deberías encontrar tu aplicación de Cake accesible en http://www.ejemplo.com/cake_1_2/.

 

Fuente: book.cakephp.org

 

Categories: 1. Comenzando con CakePHP Tags:

3.3 Instalación

Sábado, 4 de Julio de 2009 admin Sin comentarios

Instalar CakePHP puede ser tan simple como colocar el directorio en el servidor, o tan complejo y flexible como necesites. Esta sección cubrirá los tres tipos principales de instalación para CakePHP: desarrollo, producción y avanzado

  • Desarrollo: fácil para iniciar, los URL de la aplicación incluyen el nombre del directorio, y es menos seguro.
  • Producción: Requiere la capacidad de configurar el servidor web para definir el “document root”, muy seguro.
  • Avanzado: Con cierta configuración, permite ubicar los directorios clave de CakePHP en diferentes partes del sistema de archivos, para compartir una misma instalación de CakePHP para varias aplicaciones.
Categories: 3.3 Instalación Tags:

3.2.2 Permisos

Sábado, 4 de Julio de 2009 admin Sin comentarios

CakePHP usa el directorio /app/tmp para diferentes operaciones, como almacenar descripciones de los modelos, vistas en cache, información de sesiones, entre otros.

Por ello, asegúrate que el directorio /app/tmp de tu instalación de Cake tenga permisos de escritura por el usuario del servidor web

 

Fuente: book.cakephp.org

 

Categories: 3.2.2 Permisos Tags:

3.2.1 Obteniendo CakePHP

Sábado, 4 de Julio de 2009 admin Sin comentarios

Hay dos maneras de obtener una copia de CakePHP. La primera es descargar el archivo comprimido (zip/tar.gz/tar.bz2), o puedes puedes copiar una versión completa en tu computador desde el repositorio SVN oficial.

Si deseas descargar el comprimido dirígete a la página web http://www.cakephp.org. Haz clic en el enlace “Download Now!”. Los descargables de CakePHP están alojados en CakeForge, así que puedes también visitar a página del proyecto en http://cakeforge.org/projects/cakephp.

Si te gusta vivir a límite, puedes descargar los más recientes paquetes “nightly” en http://cakephp.org/downloads/index/nightly. Los “nightlies” de CakePHP son inestables, e incluyen mejoras entre dos entregas.

Para obtener una copia fresca del repositorio SVN, conéctate a https://svn.cakephp.org/repo/branches/1.2.x.x .

 

Fuente: book.cakephp.org

 

Categories: 3.2.1 Obteniendo CakePHP Tags:

3.2 Preparándose para Instalar

Sábado, 4 de Julio de 2009 admin Sin comentarios

CakePHP es rápido y fácil de instalar.Los requisitos mínimos son un servidor web y una copia de Cake, ¡solo eso! Aunque este manual se enfoca primariamente en la configuración sobre Apache (por que es el usado comunmente), Tu puedes configurar Cake para correr sobre la mayoría de servidores web, tales como, LightHTTPD o bien Microsoft IIS. Preparar la instalación consta de los siguientes pasos:

  • Descargue CakePHP
  • Configure su servidor para manejar php si es necesario
  • Checkee los permisos de los archivos

Fuenta: book.cakephp.org

3.1 Requerimientos

Sábado, 4 de Julio de 2009 admin Sin comentarios
  • Servidor HTTP . Apache con mod_rewrite preferentemente, pero no requerido.
  • PHP 4.3.2 o superior. Si, CakePHP funciona bien en PHP 4 y 5.

Técnicamente no se requiere un motor de base de datos, pero nos imaginamos que la mayoría de las aplicaciones usaran uno. CakePHP soporta una gran variedad de motores de almacenamiento:

  • MySQL (4 o superior)
  • PostgreSQL
  • Firebird DB2
  • Microsoft SQL Server
  • Oracle
  • SQLite
  • ODBC
  • ADOdb
Categories: 3.1 Requerimientos Tags:

3 Desarrollando con CakePHP

Sábado, 4 de Julio de 2009 admin Sin comentarios

Y ahora, a cocinar.

Categories: 3 Desarrollando con CakePHP Tags:

2.4.4 Convenciones de Vistas

Sábado, 4 de Julio de 2009 admin Sin comentarios

Los archivos de plantillas de Vistas (Views) deben ser nombradas después de las funciones de los controladores con underscores “_”. La funcion getReady() del controlador PeopleController se visualizara con la plantilla de vista en /app/views/people/get_ready.ctp por ejemplo.

El patrón básico es: /app/views/controller/underscored_function_name.ctp

Al nombrar las piezas de su aplicación utilizando las convenciones de CakePHP, usted adquiere funcionalidad sin mucho mantenimiento de la configuración. Aquí encontramos un ejemplo final de las convenciones

  • Tabla de Base de Datos: ‘people’
  • Clase de Modelo: ‘Person’, encontrada en /app/models/person.php
  • Clase de Controlador: ‘PeopleController’, encontrada en /app/controllers/people_controller.php
  • Plantilla de Vista, encontrada en /app/views/people/index.ctp

Usando estas convenciones, CakePHP entiende que la peticion http://example.com/people/ apunta a la llamada de funcion index() en el controlador , PeopleController, donde el modelo Person esta disponible automaticamente (y apunta automaticamente a la tabla ‘people’ en la base de datos), y se renderiza en el archivo. Ninguna de estas relaciones han sido configuradas por otra razon que crear clases y archivos que usted necesita crear.

 

Ahora que usted ya se ha involucrado con los fundamentos de CakePHP, puede revisar el tutorial para realizar un Blog en CakePHP, que se encuentra al final de este manual.

 

Fuente: book.cakephp.org

 

Categories: 2.4.4 Convenciones de Vistas Tags: