MSR Develop Blog

Posts Tagged ‘hispano

Un componente es una instancia de la clase TComponent o de sus clases hijas. La clase base TComponent implementa el mecanismo de las propiedades y eventos de los componentes.

Propiedades de los componentes

La propiedad de un componente puede ser vista como una variable pública que describe un aspecto específico del componente, como por ejemplo el color de fondo, el tamaño de la fuente, etc. Una propiedad es definida por la existencia de los getters &/o setters que son métodos de encapsulamiento en la clase del componente, veamos:

class TControl extends TComponent {
    public function getID() {
        ...
    }
    public function setID($value) {
        ...
    }
}

Para tener acceso al Get o al Set de la propiedad ID, podrás hacer lo siguiente (como si estuvieras trabajando con una variable) :

$id = $component->ID;
$component->ID = $id;

o también podrás hacerlo de la siguiente manera:

$id = $component->getID();
$component->setID( $id );

Una propiedad es de solo-lectura si tiene un método Get pero no tiene un método Set. Como los métodos en PHP son sensibles a las mayúsculas, los nombres de las propiedades también lo son. Una clase componente hereda todas las propiedades de sus clases *padres*.

SubPropiedades

Una subpropiedad es la propiedad de la propiedad de algún objeto-tipado. Por ejemplo, TWebControl tiene la propiedad Font que es del tipo TFont. Entonces la propiedad Name de Font es referenciada como una subpropiedad con respecto a TWebControl.

Para acceder a la subpropiedad mediante Set o Get se hace de la siguiente manera:

$name = $component->getSubProperty('Font.Name');
$component->setSubProperty('Font.Name', $name);

o también podrás hacerlo de la siguiente manera:

$name = $component->getFont()->getName();
$component->getFont()->setName( $name );

Eventos de los componentes

Los eventos de los componentes son propiedades especiales que toman el nombre de los métodos como valor. Adjuntar(o setear) un método a un evento conectará el método a los lugares en donde el evento ha sido activado.
Por lo tanto, el comportamiento de un componente puede ser modificado de tal forma que no pueda ser visto durante el desarrollo del componente.

Un evento de componente es definido por la existencia de un método el cuál su nombre empieza con la palabra “on”. El nombre del evento es el nombre del método y es sensible a las mayúsculas. Por ejemplo, en TButton, tenemos:

class TButton extends TWebControl {
    public function onClick( $param ) {
        ...
    }
}

Este código define un evento llamado OnClick, y un handler(manejador) puede ser ser adjunto al evento de alguna de estas maneras:

$button->OnClick = $callback;
$button->OnClick->add( $callback );
$button->OnClick[] = $callback;
$button->attachEventHandler( 'OnClick' , $callback );

donde la variable $callback se refiere a un callback (ej: un nombre de función, un método de clase array($objeto,’metodo’), etc.) válido de PHP.

NameSpaces

Un namespace se refiere a un agrupamiento lógico de nombres de clases para que puedan ser diferenciadas unas con otras aún si tienen el mismo nombre. Ya que PHP no soporta namespaces de forma nativa, usted no puede crear instancias de dos clases que tengan el mismo nombre pero diferente comportamiento.

Para diferenciarse de las clases definidas por los usuarios, todas las clases de PRADO tiene la letra ‘T’ al comienzo del nombre. Los usuarios están advertidos de no nombrar a sus clases de esta manera. Pueden hacerlo de cualquier otra forma.

Un namespace en PRADO es considerado un directorio conteniendo uno o mas archivos de clases. Una clase puede ser especificada sin ambiguedad usando el namespace seguido del nombre de la clase. Cada namespace en PRADO es especificado con el siguiente formato: PathAlias.Dir1.Dir2,

donde PathAlias es un alias para cualquier directorio, mientras que Dir1 y Dir2 son subdirectorios bajo ese directorio. Una clase nombrada MiClase definida en el directorio Dir2 puede ser accedida de la siguiente manera: PathAlias.Dir1.Dir2.MiClase

Para usar un namespace en el código puede ser de la siguiente forma:

Prado::using('PathAlias.Dir1.Dir2.*');

lo cual añade el directorio referido por PathAlias.Dir1.Dir2 en el PHP include path, asi las clases definidas bajo ese directorio pueden ser instanciadas sin necesidad de usar el prefijo de namespace. Usted también podrá incluir una definicion de clase individual de la siguiente manera:

Prado::using('PathAlias.Dir1.Dir2.MiClase');

Lo cual incluye la clase MiClase si ya no está definida.
Para mas detalles acerca de definir un alias a las rutas, vea la seccion configuracion de la aplicacion

Instanciar componentes

Instanciar componentes significa crear instancias de las clases de los componentes. Hay dos tipos de componentes instanciados: instancias estáticas e instancias dinámicas. Los componentes creados son llamados estáticos y dinámicos, respectivamente.

Instancias dinámicas de componentes

Instanciar dinamicamente a un componente significa crear instancias del componente en el código PHP. Es lo mismo a lo que comunmente se le llama creación de objetos en PHP u otros lenguajes orientados a objetos.
Un componente puede ser dinamicamente creado usando uno de los siguientes 2 métodos en PHP:

$component = new ComponentClassName;
$component = Prado::createComponent('ComponentType');

donde ComponentType refiere al nombre de una clase o al tipo nombre en un formato de namespace(ej: System.Web.UI.TControl). La segunda manera es para compensar la falta de soporte de namespace en PHP.

Instancias estáticas de componentes

Instanciar estaticamente es crear componentes vía configuraciones. La creación de estas componentes las hace el framework PRADO. Por ejemplo, en una aplicación de configuracion, uno puede configurar un módulo para ser cargado cuando la aplicación corra. El modulo es un componente estático creado por el Framework.

Instancias componentes estaticamente se usa mucho en los templates(plantillas). Cada tag componente en un template especifica un componente que será creado automáticamente por el framework cuando el template sea cargado. Por ejemplo, en una pagina template, el siguiente tag hará que se cree un componente TButton en la página:

<com:TButton Text="Register" />

Artículo: Fundamentals : Components
Traducción: Martin Sagastume Rue (msr)
Fuente: http://www.pradosoft.com/demos/quickstart/index.php?page=Fundamentals.Components

En esta sección, lo guiaremos para que pueda crear su primer aplicación PRADO, el famoso “Hola Mundo”.

“Hola Mundo” quizas es la aplicación interactiva mas simple que se pueda crear con PRADO. Muestra al usuario final una página con un botón de submit que tiene de titulo Clickeame. Luego que el usuario hace click, el titulo del botón se cambia por “Hola Mundo”

Hay muchas maneras de hacer esto. Una de ellas seria hacerle submit de la página al servidor, examinar la variablede POST y generar una nueva página con el titulo del botón actualizado. O simplemente usar JavaScript para actualizar el título del boton usando el evento OnClick.

PRADO promueve una programacion web basada en componentes y eventos. El botón es representado por un objeto del tipo TButton. Encapsula el titulo del boton en la propiedad Text y la asocia la accion de click en el botón con un evento OnClick del lado del servidor. Para responder al click del usuario en el botón, uno simplemente necesita adjuntarle una función al evento OnClick del botón.

Y en la función, la propiedad Text del botón es modificada a “Hola Mundo”. El siguiente diagrama muestra la secuencia de funcionamiento de todo esto:

sequenciaNuestra aplicación PRADO consiste de estos tres archivos, index.phpHome.page y Home.php, los cuales son reconocidos de la siguiente manera:

directory

Cada directorio (los cuales estan nombrados en ingles) los vamos a explicar ahora. Note que la estructura de directorios de mas arriba pueden ser modificiados. Por ejemplo, usted puede mover el directorio protected para afuera del directorio Web. Usted sabrá hacer esto luego de terminar este tutorial.

  • assets – directorio que guarda los archivos publicados privados. Ver la sección assets para mas detalles.Este directorio debe ser escribible  por el servidor Web.
  • protected – ruta de la aplicación donde se guarda los datos y los scripts privados. Este directorio debe ser configurado como inaccesible a los usuarios finales.
  • runtime – ruta de la aplicación donde se guarda la informacion de runtime(tiempo de ejecución), como el estado de la aplicación, data guardada, etc. Este directorio debe ser escribible por el servidor Web.
  • pages – ruta base para guardar todas las paginas PRADO

Consejo: Usted puede usar framework/prado-cli.php script de linea de comando para crear la estructura de projecto PRADO, como la que se muestra en la imagen de mas arriba. Por ejemplo, puede ejecutar el siguiente comando: php /ruta/hacia/prado-cli.php -c helloworld  ,  o en español /ruta/hacia/prado-cli.php -c holamundo

Los tres archivos necesarios son los siguientes:

  • index.php – el script de entrada para la aplicacion PRADA. Este archivo es requerido por todas las aplicaciones PRADO y es el único script accesible por los usuarios finales. El contenido de index.php consiste basicamente de estas siguientes tres lineas:
require_once('path/to/prado.php');  // incluye el script prado

$application=new TApplication;      // crea una instancia que hace referencia al objeto de la clase TApplication

$application->run();                // corre la aplicacion
  • Home.page – el template para la pagina por defecto retornado cuando los usuarios no especifican la pagina pedida. Un template especifica la capa de presentacion de componentes. En este ejemplo, usamos dos componentes, TForm y TButton los cuales corresponden a los tags HTML <form> e <input> respectivamente. El template tiene el siguiente contenido:
<html>
  <body>
    <com:TForm>
      <com:TButton Text="Clickeame" OnClick="buttonClicked" />
    </com:TForm>
  </body>
</html>

 

  • Home.php -Class para la pagina Home page. Basicamente contiene el método que responde al evento OnClick del botón.
class Home extends TPage
{
    public function buttonClicked($sender,$param)
    {
        // $sender refers to the button component
        $sender->Text="Hola Mundo!";
    }
}

Esta aplicación esta ahora lista para ser accesible desde: http://direccion-servidor-web/helloworld/index.php, asumiendo que el directorio helloworld esta dentro del directorio principal raiz del servidor. Pruebe como práctica cambiar el TButton en Home.page a TLinkButton y ver que pasa 🙂

Consejo : Generalmente la dirección del servidor web es Localhost si esta trabajando en su computador personal y tiene apache corriendo. Pruebe acceder desde : http://localhost/helloworld/ o http://localhost/helloworld/index.php

Puede probar este ejemplo online.

Artóculo: My first PRADO application
Traducción: Martin Sagastume Rue (msr)
Fuente: http://www.pradosoft.com/demos/quickstart/index.php?page=GettingStarted.HelloWorld

Correcciones, comentarios o sugerencias.. déjelo en este post.