Joomla! Platform 2: La fábrica de objetos de Joomla

2013-06-08 - Categorías: PHP
Hoy les escribo un poco más sobre Joomla y su framework de desarrollo en PHP, la Joomla Platform. Esto es una joya, aunque no se usa mucho de manera independiente al CMS puede ser que pronto se haga. Por lo menos mi opinión es que es un buen framework; simple, rápido y eficaz, una buena alternativa.
Siguiendo con la carnicería, sacando toda la casquería, las tripas y demás de todo lo que es el CMS y el framework. Y nos encontramos con la fábrica de objetos, la clase JFactory.
La fábrica de objetos se usa constantemente en el CMS, en el desarrollo de extensiones, y si queremos desarrollar un sitio web a partir del framework podemos usarla y de esta manera tendremos todo el proyecto mejor estructurado.

Materiales

  1. El framework, Plataforma Joomla para los amigos.
  2. Un entorno de desarrollo o editor de texto: Eclipse, Notepad++, Gedit, Vi, Notepad o el que sea que use..
  3. Un servidor web con PHP: Va muy bien el XAMPP

El ejemplo

Con ésto pequeño ejemplo se puede ver una forma muy simple de usar el framework:

...
<?php

// se importa la Plataforma Joomla.
require_once 'libraries/import.php';

// en éste ejemplo tan simple la clase la pongo aquí pero
// se debería poner en otro fichero
class laWeb extends JApplicationWeb {
protected function doExecute()
{
$this->setBody("<html><body>");
$this->appendBody("<h1>Plataforma Joomla! probando la fábrica</h1>");

// declara una variable que es un objeto para trabajar con emails
$emiliator = JFactory::getMailer();
$this->appendBody("<p>Versión de MAILER de la plataforma: " . $emiliator->Version);

$this->appendBody("</body></html>");

}
}

// instancio un objeto de la aplicación web
$app = JApplicationWeb::getInstance("laWeb");

// guardo la aplicación en el core
JFactory::$application = $app;

// uso la aplicación web que guardé directamente desde el core
JFactory::getApplication()->execute();
...

Descargar archivo con el ejemplo.

JFactory es un objeto, que sirve para acceder al núcleo del framework, es decir, nos va a dar acceso a todo tipo de objetos que, al instanciarlos en nuestro programa, podremos usarlos y ahorrarnos el desarrollo de éstos.

Explicaciones

En el ejemplo he usado la función getMailer() para tener acceso al objeto de tipo JMail que tenemos en el framework. Es una interfaz con la que podremos construir en un email con destinatario, asunto, mensaje, etcétera… y configurando los parámetros del servidor de email podríamos enviar.
Hay muchos otros objetos, para hacernos una idea general, la fábrica de Joomla nos proporciona las siguientes funciones con las que acceder a éstos:
  • getACL: para manejo de autorizaciones.
  • getApplication: almacena la aplicación.
  • getCache: la caché.
  • getConfig: las configuraciones del sitio.
  • getDate: para manejo de fechas.
  • getDbo: manejo de bases de datos.
  • getDocument: manejo de documentos de varios tipos.
  • getEditor: el editor.
  • getFeedParser: te da un XML ya parseado.
  • getLanguage: el lenguaje.
  • getMailer: el mailer del ejemplo.
  • getSession: manejo de sesiones.
  • getStream: manejo de esos objetos tan útiles a veces, los streams.
  • getURI: para URIs.
  • getUser: el usuario.
  • getXML: para manajar ficheros XML.
Me remito a la documentación oficial, como siendo costumbre para más información sobre cada función: http://api.joomla.org/
Podemos ver la implementación completa de la JFactory en el archivo /libraries/joomla/factory.php
Me siento friki de nuevo, otros leen, juegan a videojuegos… cuando tienen tiempo. Yo me complico la vida tratando de averiguar cómo los desarrolladores de Joomla, han hecho el CMS y su framework, me saltan chispas y estoy hechando humo, pero lo he disfrutado.. ¿éso es de friki no? xD Espero haber dado algo de luz sobre la JFactory.
Para cualquier mensaje, aquí abajo lo pueden dejar.
Un saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

© 2024 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.