Mostrando entradas con la etiqueta Compnentes. Mostrar todas las entradas
Mostrando entradas con la etiqueta Compnentes. Mostrar todas las entradas

miércoles, 5 de marzo de 2014

Guardar componentes de Coldfusion en espacios persistentes


• Cuando creamos componentes con la etiqueta <cfobject> o con createObject(),
podemos almacenar la instancia en:
■ En una zona de almacenamiento local (local scopes)
■ En una zona de almacenamiento pesistente (persistent scopes) como podría ser:
– Request
– Session
– Application

Nota: Cuando almacenamos un componente en una zona persistente, su código también queda almacenado en esa zona, por los que cuando cambiamos el código del mismo, éste no se refresca en forma automática.

Crear instancias en espacios persistentes

• Crear una instancia directamente en los espacios persistentes:

■ <cfset application.cfcAnimal = createObject("component","components.animal")
■ <cfobject component="components.animal" name="application.myAnimal">

• Primero crear la instancia y luego subirla al espacio persistente:

■ <cfset myAnimal = createObject("component", "components.animal")>
■ <cfset application.myAnimal = myAnimal>

Acceder a los componentes en zonas o espacios persistentes

•Al igual que otros componentes, podemos acceder a sus métodos y propiedades por medio del espacio persistente (cached scope):

<cfset application.myAnimal =createObject("component", "components.animal")>
<cfset application.myAnimal.name = “Value”>
<cfset myResult = application.myAnimal.MyMethod()>

http://www.pacoarce.com



jueves, 20 de febrero de 2014

Los métodos getter y setter en Coldfusion 10


Uno de los principios fundamentales en la programación orientada a objetos es que el usuario sólo debe de interactuar con las propiedades del componente o clase por medio de funciones getter y setter, nunca en forma directa.

Adicionalmente, por medio de los métodos getter y setter podremos hacer validaciones de los valores recibidos o modificados:

<cfcomponent>

<cfset variables.myNumericValue = 0>

<cffunction name="getMyNumericValue" access="public" output="false" returnType="numeric">
<cfreturn variables.myNumericValue>
</cffunction>

<cffunction name="setMyNumericValue" access="public" output="false" returnType="void">
<cfargument name="myValue" type="numeric" required="true" >
<cfset variables.myNumericValue = myValue>
</cffunction>

<cfcomponent>

Uso de una propiedad en un componente <cfproperty>

• Las propiedades añadidas con <cfproperty> son vistas desde la documentación.
• La etiqueta <cfproperty> contiene algunos atributos que aydan en la definición de la propiedad
• La etiqueta <cfproperty> genera automáticamente, por medio de el atributo accesors,  los métodos getter y setter

Atributos de la etiqueta <cfproperty>

• name: nombre de la propiedad
• default: valor por omisión de la propiedad
• displayName: nombre descriptivo de la propiedad
• required: define si la propiedad es requerida
• serializable:determina si la propiedad es serializable
• type: tipo de dato de la propiedad

El atributo Accessors

• <cfcomponent> sólo generan los getters y setters en forma automática cuando de tiene el atributo accesors = "true".

Ejemplo:

<cfcomponent accessors=”true”>

<cfproperty name="dsn" displayName="dataSource" hint="Data source to be used in this component" type="string" />

<cfset variables.myNumericValue = 0>

<cffunction name="GetMyNumericValue" access="public"returnType="numeric">
<cfreturn variables.myNumericValue>
</cffunction>

<cffunction name="SetMyNumericValue" access="public" returnType="void">
<cfargument name="myValue" type="numeric" required="true" >
<cfset variables.myNumericValue = myValue>
</cffunction>

</cfcomponent>

http://www.pacoarce.com

miércoles, 29 de enero de 2014

Joomla tiene cuatro extensiones:

  1. Modulos
  2. Componentes
  3. Plugins
  4. Plantillas
Los módulos son las extensiones más sencillas en Joomla, Son pedazos de código que podemos colocar en cualquier parte y en cualquier número. Los siguientes datos es parte de lo que investigué en la página de joomla.org/Developpers:

Estructura de archivos

Iniciaremos, aunque usted no lo crea, con el "hola mundo". Hay cuatro archivos básicos que se utilizan dentro del patrón estándar en el desarrollo de un módulo:
  • mod_helloworld.php - Este archivo es el principal punto de entrada para el módulo. Se llevarán a cabo las rutinas de inicialización necesarias, llamar a las rutinas auxiliares para recoger todos los datos necesarios, e incluir la plantilla que muestra la salida del módulo.
  • mod_helloworld.xml - Este archivo contiene información acerca del módulo. En él se definen los archivos que necesitan ser instalados por el instalador de Joomla! y especifica los parámetros de configuración del módulo.
  • helper.php - Este archivo contiene la clase helper que se utiliza para hacer el trabajo real en la recuperación de la información que se muestra en el módulo (por lo general a partir de la base de datos o alguna otra fuente).
  • tmpl / default.php - Esta es la plantilla del módulo. Este archivo tomará los datos recogidos por el mod_author_related.php y generará el código HTML que se muestra en la página.
Con esta estructura de archivos, se está siguiendo un esquema MVC, donde la "Vista" es el archivo default.php y las reglas de negocio se encuentran en helper.php.

Faltan otros dos archivos, como veremos más adelante, que servirán para preveer que alguien ejecute directamente muestro módulo entrando a su directorio o carpeta.

1) Creación del mod_helloworld.php

Primero crea una carpeta para almacenar tu super módulo. Por tradición milenario se llamaría como se llama tu módulo, en este caso mod_helloworld y ahi vas escribiendo y almacenandotus archivos.

El archivo mod_helloworld.php llevará a cabo tres tareas:
  • Incluir el archivo helper.php que contiene la clase que se utiliza para recoger los datos necesarios.
  • Invocar el método apropiado para recuperar los datos.
  • Incluir la plantilla para mostrar la salida.
 Aqui ek primer despiste; helper a mi me sonaba como archivos para desplegar la ayuda, pero son las rutinas auxiliares. Punto muy importante, se utiliza PHP orientado a objetos.

Siguiendo estos tres puntos, vamos a colocar un poco de código en nuestro archivo.
La clase helper está definida en nuestro archivo helper.php .
Este archivo se incluye con la declaración require_once .

require_once dirname(__FILE__).'/helper.php';
 
require_once se utiliza porque nuestras funciones auxiliares se definen dentro de una clase, y sólo queremos la clase definida, una vez.

Para invocar a nuestro método utilizaremos la siguiente líneas:

$hello = modHelloWorldHelper::getHello( $params );
  
Recuerde que es programación ortinetada a objetos. Estamos definiendo una método que se llama getHello() y estamos pasando un parámetro. El primer archivo completo quedaría así:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
// Include the syndicate functions only once
require_once( dirname(__FILE__).DS.'helper.php' );
 
$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
?> 

La clase modHelloWorldHelper se crea dentro del archivo helper.php, como se ve a continuación

2) Creación del helper.php

El archivo helper.php contiene la clase necesaria para recuperar los datos que se muestran en la salida del módulo. Esta clase a su vez tendrá un método que se encargara de dicha tarea.

Aquí está el código para el archivo helper.php:


<?php
class modHelloWorldHelper
{
    
    public static function getHello( $params )
    {
        return 'Hello, World!';
    }
}
?>

En el ejemplo estamos leyendo un parámetro que no utilizamos, pero es para preveer su uso, aunque obviamente aqui no es necesario. Creamos la clase modHelloWorldHelper (que no hay ninguna regla que te obligue escribir con esa sintaxis el nombre de la clase, pero ya es un clásico en la comunidad de joomleros) y luego el método getHello, donde puedes vaciar todos tus conocimientos sobre la herramienta e impresionar a tus cuates.

3) Creación del tmpl/default.php

El archivo default.php es la plantilla que muestra la salida del módulo. El código para el archivo default.php es el siguiente:

<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php echo $hello; ?>

 O sea, que hay que hacer una carpeta que se llame tmpl y ahi guardar el archivo. Ojo.

4) Creación del mod_helloworld.xml

El mod_helloworld.xml se utiliza para especificar los archivos que el instalador tiene que copiar, y sean usados por el gestor de módulos para determinar qué parámetros se utilizan para configurar el módulo. Otras informaciones sobre el módulo también se especifica en este archivo.
El código para mod_helloworld.xml es el siguiente:

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" client="site" method="upgrade">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.0.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <filename>mod_helloworld.xml</filename>
        <filename module="mod_helloworld">mod_helloworld.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
    </files>
    <config>
    </config>
</extension>

Si ha manejado otras aplicaciones, como el SCORM, verá que es muy similar al "manifiesto".

Y si observa, aparecen dos archivos invitados nuevos: index.html y tmpl/index.html. Ambos son para preveer a los aprendices de hacker entrar a nuestra carpeta. Este archivo puede ser tan sencillo como:

<html><body bgcolor="#FFFFFF"></body></html>
 
Con esto hemos completado nuestro directorio del módulo, el cual deberá tener los siguientes archivos:
  • mod_author_related.php
  • mod_author_related.xml
  • helper.php
  • tmpl / default.php
Opcionalmente puede añadir los archivos
  • index.html
  • tmpl / index.html

Si no va a utilizar los archivos html, no olvide también quitarlos del manifiesto.

Empaquete en un formato zip todos los archivos (no el directorio, sino solo los archivos y la carpeta tmpl).
Intégrelos a Joomla por medio de Extensiones
Colóquelo dentro de la página con  Extensiones > Administrador de módulos

Asi tendremos un módulo muy sencillo en Joomla! y lo mejor de todo es que si funciona. El presente blog fue tomado delmanual de desarrolladores.

Los archivos los encuentras aqui.


http://www.pacoarce.com