Hola Mundo KumbiaPHP Framework

De KumbiaPHP Framework Wiki

El presente ejemplo tiene como objetivo entender la creación de una primera aplicación usando KumbiaPHP, que nos servirá para entender la arquitectura MVC y algunos características interesantes.

Creando una nueva aplicación

Lo primero que se debe hacer es Descargar la Versión 1.0 de KumbiaPHP, Una vez obtenida la copia del Framework descomprimimos y cambiamos el nombre la carpeta con el nombre de nuestro proyecto, para efecto del ejemplo llamaremos a nuestro proyecto kumbiaphp quedando de la siguiente forma:

kumbiaphp/
|-- app
|-- core
|-- index.php

Mas detalles sobre la Estructura de Directorio de la Versión 1.0.

Antes de continuar vamos a verificar que todo este trabajando bien en nuestras configuraciones a nivel de servidor web, para esto abrimos nuestro navegador web y colocamos http://localhost/kumbiaphp/, si todo esta funcionando bien debería mostrarnos la Pantalla de Bienvenida de KumbiaPHP.

Pantala de Bienvenida de KumbiaPHP Framework

Hola KumbiaPHP

Ahora tenemos que escribir el famoso Hola Mundo! pero nosotros hicimos un pequeño cambio y sera Hola KumbiaPHP! Pensando en esto recordemos el modelo MVC. Según esto, KumbiaPHP debería aceptar una petición que buscaría en controlador y en éste, una acción que atendería la petición, luego KumbiaPHP utilizara esta información de controlador y acción para buscar la vista asociada a la petición.

Para escribir el código de nuestro Hola KumbiaPHP!, no necesitamos sino un controlador y una vista. No necesitamos modelos ya que no estamos trabajando la información de una base de datos.

Nos ubicamos en el directorio app/controllers/ aquí estarán nuestros controladores (ver mas), para crear un controlador es importante tener en cuenta las convenciones de nombre que utiliza el Framework, para entender mejor nosotros llamaremos a nuestro controlador saludo_controller.php nótese el sufijo _controller.php esto forma parte de la convención de nombre y hace que KumbiaPHP identifique ese archivo como un controlador.

app/controllers/saludo_controller.php

Dentro de este archivo colocaremos las siguientes lineas de código.

<?php 
class SaludoController extends ApplicationController {
    public function hola() 
    {
        //Ver método render[1]
        $this->render(null);
    }
}

como vemos en una clase con un método hola(), nótese que también esta el sufijo Controller al final de la declaración de la clase esto la identifica como una clase controladora y esta hereda (extends) de la superclase ApplicationController con lo que adquiere las propiedades de una clase controladora.

[1] Método render

Vamos a ejecutar desde el navegador nuestro controlador saludo y la acción hola de la siguiente manera http://localhost/kumbia/saludo/hola/.

Como podemos darnos cuenta tenemos una acción vacía sin nada que mostrar al usuario que realizo la solicitud, esto es sencillo de deducir ya que no tenemos ninguna vista asociada a nuestra acción.

Renderizando un Controller sin View

KumbiaPHP URLS

Para continuar de una manera que vayamos entendiendo el funcionamiento del framework es importante entender sus URL, hagamos una descomposición de esta URL http://localhost/kumbia/saludo/hola/

http://localhost => Dominio
       /kumbiaphp => Nombre del Proyecto
            /saludo => Nombre del Controlador
               /hola => Nombre de una Accion del Controlador
NOTA: Normalmente en los hosting no necesitamos el nombre del proyecto como se muestra arriba, simplemente se coloca el directorio app/ en public_html

http://domio.com/saludo/hola/
http://dominio.com => Dominio
         /saludo => Nombre del Controlador
            /hola => Nombre de una Accion del Controlador

Cualquier otra información pasada por URL es tomada como parámetro a la acción para propósito de nuestra aplicación.

http://localhost/kumbia/saludo/hola/param1/param2/

http://localhost => Dominio
       /kumbiaphp => Nombre del Proyecto
            /saludo => Nombre del Controlador
               /hola => Nombre de una Accion del Controlador
                  /param1 => Parámetro 1
                      /param2 => Parámetro 2

Quedando la acción hola de la siguiente forma:

    ...

    public function hola($param1, $param2) 
    {
        //quitamos el render
    }

    ...

Esto es útil para evitar que tener estar enviando parámetros GET que no hacen que se vea bien nuestra URL.

Nuestra Primera Acción

Agreguemosle contenido a la acción hola.

<?php
class SaludoController extends ApplicationController {         

    public function hola() 
    {
        //quitamos el render
    }
}

Para poder ver la salida que envia el controlador es necesario crear la vista asociada a la acción, esto lo hacemos creando un directorio con el mismo nombre de nuestro controlador en este caso debería llamarse saludo y dentro de este estarán todas las vistas asociadas a las acciones que necesiten mostrar alguna información, para efecto del ejemplo llamamos a una acción llamada hola por lo tanto creamos un archivo llamado hola.phtml fíjese que el archivo se llama igual que la acción, este archivo lo creamos en el directorio:

app/views/saludo/hola.phtml

Una vez creado este archivo le agregamos un poco de contenido...

<h1>Hola KumbiaPHP</h1>

Ahora si volvemos ejecutar desde nuestro navegador web http://localhost/kumbia/saludo/hola/ si nos debe mostrar el contenido del archivo hola.phtml obtenemos la siguiente salida.

Mostrando el Contenido de un View

Ahora si visualizamos en el explorador se entiende que KumbiaPHP automáticamente carga la vista con el mismo nombre la acción en el directorio con el nombre del controlador seleccionado. Poniendo a consideración podríamos decir que las vistas permiten la salida al usuario usando PHP embebido en HTML. Por esto las vistas poseen extensión phtml a diferencia de los controladores que poseen PHP puro y por esto su extensión .php

Pues como se ve ya hemos ejecutado la primera acción en Kumbia esto nos permite apreciar el comportamiento del Framework.

Agregando más Contenido

Ahora vamos a mostrar la hora y fecha haciendo uso de la función date(), con esto evitamos tener un contenido estático y tener un sitio mas dinámico, editamos el archivo saludo_controller.php.

<?php 
   public class SaludoController extends ApplicationController {
      public function hola() {
         $this->fecha = date("Y-m-d H:i");
      }
   }

Y la vista hola.phtml quedaría asi:

app/views/saludo/hola.phtml

<h1>Hola KumbiaPHP</h1> 
<?php echo $fecha ?>

Nota: Cuando hacemos uso de $this sobre una variable en el controlador, como se puede apreciar con $this->fecha, automáticamente tenemos esa variable en la vista de la siguiente manera $fecha, esto porque KumbiaPHP trabaja con variables de instancia.

Ahora si volvemos a ejecutar http://localhost/kumbia/saludo/hola/ obtendremos la hora y fecha del momento en que se haga la petición.

Renderizando la vista hola con una variable pasada desde el controller

Repitiendo la Historia

Ahora vamos a crear otra acción llamada despedida, que le dirá adiós a los usuarios:

<?php 
   public class SaludoController extends ApplicationController {
      public function hola() {
         $this->fecha = date("Y-m-d H:i");
      }
      //dice adios...
      public function adios() 
      {}
      
   }

Tal como se menciona arriba creamos una vista con el nombre de la acción en este caso nuestra vista en:

app/views/saludo/adios.phtml

<h1>Adiós</h1>
<?php echo link_to('saludo/hola/', 'Volver a Saludar') ?>

Ahora colocamos en nuestro navegador http://localhost/kumbia/saludo/adios/ obtendremos un texto y un vinculo hacia nuestro controlador saludo y la acción hola.

Renderizando la Vista adios y muestra un link que vuelve a la vista hola

link_to, es un helper que ofrece KumbiaPHP para facilitar al momento de programar, este helper es equivalente a hacer

<a href="kumbiaphp/saludo/index">Volver a Saludar</a>

Esto funciona bien, pero que sucedería si decidimos cambiar el nombre de la aplicación de kumbiaphp a demo por ejemplo, significa que deberías cambiar los vínculos de la aplicación para que apunten a la nueva ubicación.