Introducción.

  • Son objetos escritos basados en una especificación.
  • Heredan de la clase CComponent.
  • Es posible acceder y modificar sus propiedades así como lanzar y manejar sus eventos.

Propiedades.

  • Son atributos públicos de lectura y escritura.
  • Pueden definirse de dos maneras.
    • Declarando un atributo público en el componente.
      • En este caso el nombre de la propiedad es sensible a mayúsculas.
    • Definiendo los métodos setter y getter correspondientes.
      • En este caso el nombre de la propiedad no es sensible a mayúsculas.
      • Para implementar la propiedad imageType es necesario implementar los siguientes métodos.
        public function getImageType()
        {
            return $this -> _imageType;
        }
        public function setImageType($value)
        {
            $this -> _imageType = $value;
        }
      • Este método es mas flexible ya que permite definir una lógica del negocio que condicione el acceso a las propiedades.
      • De igual manera es posible implementar propiedades de sólo lectura (sin setter) o de sólo escritura (sin getter).

Eventos.

  • Los eventos del componente son propiedades que toman referencias a métodos (event handlers) como valores.
  • Estos métodos son invocados automáticamente cuando sucede el evento asociado.
  • Un evento del componente es definido por la implementación de un método cuyo nombre empieza por on y termina con el nombre del evento asociado (no es sensible a mayúsculas).
    • Para el evento click -> el método deberá ser entonces: onClicked.
      public function onClicked($event)
      {
          // ...
      }
  • Los eventos ($event) son instancias de la clase CEvent.
  • Los manejadores de evento se asginan de la siguiente manera.
    $component -> onClicked = $callback;
    • $callback deberá ser una referencia válida en PHP según las siguientes opciones.
      • El nombre de una función global.
      • Un método de una clase, para este caso deberá ser de la forma array($objeto, ‘nombreMétodo’).
  • Varios manejadores de evento pueden asociarse a un mismo evento, estos se ejecutarán en el orden en que fueron creados.
  • Un manejador de eventos puede evitar que se invoquen los demás manejadores de eventos al realizar la siguiente modificación.
    $event -> handled = true;

Comportamientos.

  • Un comportamiento es un objeto cuyos métodos pueden ser transferidos a los componentes que se le agreguen.
  • Es decir, reune funcionalidades en lugar de realizar una especialización como lo hace la herencia convencional.
  • Es posible agregar múltiples comportamientos lo que se asemeja a la herencia múltiple.
  • Son análogos a los mixins que incluyen otros lenguajes orientados a objetos (como Ruby) o que implementan otros frameworks (como Symfony).
  • Existen varias maneras de implementar un comportamiento.
    • Como una clase que implementa a la interfaz IBehavior.
    • Como una clase que hereda de CBehavior.
    • Si va a ser agregado a un modelo puede ser una clase que herede de CModelBehavior o CActiveRecordBehavior según corresponda.
  • Para utilizar un comportamiento primero debe ser agregado a un componente.
    $comportamiento -> attach($nombre, $componente);
    $componente -> métodoDelComportamiento();
  • Los comportamientos pueden ser activados y desactivados según se desee en cada componente.
    $componente -> enableBehavior($nombre);
    $componente -> disableBehavior($nombre);
  • Si dos o mas comportamientos agregados a un componente entran en conflicto porque tienen métodos con igual nombre, la precedencia la tendrá el comportamiento que haya sido agregado primero.

Enlaces.

VN:F [1.9.3_1094]
Rating: 0 (from 0 votes)

No hay artículos relacionados.