Como hacer la semántica web fácil con zenphp

Semántica web

Si tenemos nuestra aplicación web montada, lo único que tenemosque hacer es configurar los activadores (rutas de .htaccess de Apache) de las acciones (funciones PHP) de los modelos (clases PHP que extienden de zen_modelo_datos) de datos o las funciones de los visualizadores (clases PHP) de forma que podemos incluso crear nuestra propia gramática: loquesea.es/hablar/con/Manolo –> nos contactaría con Manolo 😉

Ejemplo

Como siempre, veamos un ejemplo para comprender mejor la idea:

Tenemos una aplicación (zen_aplicacion) instanciada en index.php con la variable $app , ahora ,dentro de esta hay un visualizador por defecto llamado html_aplicacion en $app->html, bien, pues ahora sólo tenemos que decirle a Apache que nos redirija las entradas de direcciones con un .html al final, a las funciones de $app->html , como por ejemplo: Una típica función para ver un producto:

* En tu .htaccess (después de poner “Options +FollowSymLinks” y “RewriteEngine on” ):

RewriteRule ^productos\/(.*)\.html index.php/ver_producto/$1/

Con esta regla se llama a index.php donde se instancia $app y se llama a $app->enrutador->delegar() que analiza el resto de la dirección, es decir, productos/fichero.html…de forma que llama a la función productos ,si no existe llama al modelo con nombre productos, en nuestro caso es una función del visualizador de la aplicación (más sencillo),

Código

* Esto es lo único que tiene la función

echo $this->plantilla->devolver_contenido(“productos/”.zen_sanar($datos[1]).”.html”);

si queréis ser más profesionales, crear una plantilla HTML y meterle los datos usando las #etiquetas# ya explicadas en otros posts, asi como hacer comprobaciones de existencia del fichero .HTML y poner una plantilla tipo producto_inexistente.html si no se encuentra… (típico)

$p = new zen_plantilla();
$this->c =& $this->padre->padre->contenido; //array de contenido de la web
if ($p->cargar(“productos/”.zen_sanar($datos[1]).”.html”))
$this->c[‘contenido’] = $p->devolver_contenido(“productos/”.zen_sanar($datos[1]).”.html”);
else
$this->c[‘contenido’] = $p->devolver_contenido(“productos/no_encontrado.html”);
parent::index(); //Muestra la plantilla base_web.html y reemplaza etiquetas, etc.

Y así tendréis algo como lo siguiente:

http://www.empresayjuventud.com/productos/frescos/sandias.html

Seguramente ,se puede hacer mucho más fácil, pero ,también seguramente habrá alguien por ahi que lo escriba, saludos!
El conjunto de administración está siendo terminado, espero poder publicarlo pronto…

Progreso del generador de aplicaciones PHP/GTK

Hoy he estado avanzando en el trabajo con el generador de aplicaciones PHP/GTK de zenphp, estoy aprendiendo un montón de GTK, bueno como dos imágenes valen más que dos mil palabras, pasamos a las capturas mejor 🙂

Otra imagen del entorno inicial:

No hagais mucho caso a las capturas,son los primeros avances del diseño del configurador de modelos y parámetros del generador a partir de un XML…

La última versión del generador está en el directorio trunk/zenphp/generador/gtk del SVN de la Forja:
svn checkout https://forja.rediris.es/svn/csl2-zenphp/trunk zenphp
y recordar que se carga con una orden del tipo:
php zen_generador_gtk.php
Ahora mismo estoy desarrollando la parte en que se carga el fichero XML con todas las opciones y se interpretan en la interfaz de usuario para ser editadas, de forma que se puede utilizar el entorno gráfico para con varios clicks generar una aplicación web ( sencillamente ) compleja con conexión a la base de datos.
Hay editor para ver las bases de datos mysql, que encontré en la red y lo he adaptado al generador porque me parece muy útil.
Además he incluido un visor de objetos de PHP-GT de kksou

¿Cómo funciona?

Continue reading

Primer “cartucho” para el generador de aplicaciones

Esta vez he tomado la captura en Windows, el primer “cartucho” o dicho de otra forma: aplicación configurable donde poder incluir nuestro propio código a generar es el de un portal en AJAX.

Se pretende hacer un portal, algo como este pero más sencillo y administrable desde una interfaz gráfica en PHP/GTK que use el sistema zenphp como framework de aplicaciones web usando el paradigma de programación orientada a aspectos.

Manual zen_generador: Instalación y pruebas para zenPHP/GTK2

PASOS PARA LA INSTALACIÓN DE PHP/GTK

Instalar php5, php5-dev,gtk2,gtk+
++++++++++
apt-get install php5 php5-dev libgtk2.0-0 libgtk2.0-common libgtk2.0-dev
++++++++++
Descargar PHP-GTK de :
http://gtk.php.net/download.php
concretamente he usado : http://gtk.php.net/do_download.php?download_file=php-gtk-2.0.0.tar.gz
descomprimir,configurar y compilar:
++++++++++
./buildconf ; ./configure ; make ; make install ; make test
++++++++++
Configurar /etc/php5/cli/php.ini
++++++++++
extension_dir = “/usr/lib/php5/20060613+lfs/” #en mi caso…
extension = php_gtk2.so
++++++++++

Ya tenemos PHP/GTK2.0 instalado, ¿Qué podemos hacer ahora?

Probar la demo de php Gtk:

php-gtk-2.0.0/demos$ php5 phpgtk2-demo.php

Obtenemos la siguiente ventana con los tests…

Además podemos probar la demo de aplicación generadora de aplicaciones de zenphp, que usa un fichero XML para definir el contenido del programa, como se hace con zen_POA. El esquema viene a ser el siguiente:

Para generar nuestras propias interfaces de PHP/GTK2 podemos hacerlo con Glade2:

,o un buen editor visual de interfaces como Gazpacho

sudo apt-get install gazpacho

Lo mejor del generador de aplicaciones es que es multiplataforma y genera aplicaciones para PHP/GTK o bien para web, como se pretende 🙂
es difícil llevar varias partes del Proyecto a la vez, pero con esfuerzo y dedicación se puede hacer, aunque lo más importante es la concentración en mi opinión.
Salu2!

Decisiones importantes

Dicen que nuestras decisiones marcan nuestro destino, por eso debemos ser nosotros mismos quienes decidamos en nuestra vida…

Veamos, las decisiones importantes del proyecto actualmente…

  • Usar gettext para los idiomas en la parte del núcleo de zenphp y el editor Poedit para crear los ficheros de idiomas (.po). ¡Es más eficiente que el uso de cadenas y constantes!…
  • Usar PHP/GTK para el generador de aplicaciones en lugar de generar por línea de comandos (cambio de chip)
  • Basar el generador de aplicaciones en modelos XML, así se puede actualizar el generador muy fácilmente, pudiéndose construir incluso un generador de generadores.
  • Diseñar “cartuchos” de aplicaciones como “Portal.XML” que generan con las opciones pasadas una aplicación completa de un portal web

La última decisión la he tomado porque ayer encontré que existen ya mecanismos que pasan de un modelo XMI construido en un editor UML a un conjunto de ficheros de clases de PHP, por lo tanto sería absurdo volver a repetir lo que otros han construido,asi que por lo tanto ,me centro en construir una aplicación PHP/GTK que utilice mi compilador y generador de aplicaciones basado en el paradigma de la programación orientada a aspectos, que lo tengo un poco olvidado 🙂

Con ello se cumple el objetivo del proyecto de ser un framework de aplicaciones web y ahora estoy con la parte de generador de aplicaciones en PHP/GTK.
Ahí va una captura del editor Poedit en primer plano y Kate al fondo (gracias al uso de un manualillo) 🙂

Buena práctica!

Temas por defecto

Aprovechando que he terminado una práctica de esas gordas para la Universidad he montado un sistema de aplicaciones cliente / administrador utilizando las plantillas XHTML+CSS de licencia para copiar 🙂 con ésto siento que he progresado! y mucho, 😀 y realmente estoy bastante contento con el diseño, la plantilla sirve para hacer las llamadas a las vistas y controladores por defecto de todo el sistema de clases de zenphp.

Aquí, una captura de la plantilla en funcionamiento:

Captura de la aplicación por defecto de zenphp

 

Estoy terminando con la plantilla de administración, la factoría de generación de código depende de la clase zen_andamio (el scaffolding de zenphp) y la administración depende de zen_AJAX. Tras escribir esta mañana la clase zen_JSON está bastante avanzado…

Con esto tengo una buena parte hecha de lo que veía imposible ,sin embargo ha sido más fácil de lo que en un principio parecía y ya incluso veo el final del túnel. 

Resultados [iniciales] de la encuesta sobre AJAX

Éstos son los resultados de la encuesta AJAX realizada a programadores…

Parece que todo el mundo conoce AJAX! y que no les gustan mucho los métodos que hay en los frameworks (ni tan siquiera lo que han hecho otras personas: aplicaciones AJAX), ésto plantea un problema que se reduce a las siguientes cuestiones:

  1. ¿Quién necesita un mecanismo AJAX
  2. ¿Cómo realizar una correcta interpretación de lo que el usuario necesita dentro de un conjunto de librerías?
  3. ¿Realmente necesitamos aprender AJAX o simplemente con una serie de llamadas tenemos el trabajo hecho?

Y la respuesta se resume en que: lo más simple es la mejor decisión. Por ello utilizaré una única librería AJAX comprimida (con Prototype incluído) y una serie de objetos extensibles para que el usuario pueda añadir todas las funcionalidades con un par de líneas y…claro, el usuario más avanzado pueda ir a modificar lo que necesite…

Vamos ya a los Resultados!…(entrar para ver las gráficas) Continue reading