Los componentes en Yii
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).
- Declarando un atributo público en el componente.
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) { // ... }
- Para el evento click -> el método deberá ser entonces: onClicked.
- 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’).
- $callback deberá ser una referencia válida en PHP según las siguientes opciones.
- 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.
- Yii Web Programming Framework.
http://www.yiiframework.com/ - Yii Documentation.
http://www.yiiframework.com/doc/
Artículos relacionados:
Category: Desarrollo de software, Web | Tags: Hipergalaxia, MVC, PHP, Yii 2 comments »
























September 21st, 2009 at 5:29 pm
hola jorge, como siempre gracias por esta documentación buena sobre Yii, jeje estoy siguendo este framework.
te queria comentar un detalle sobre este post:
según la documentación la notación que leo es Behavior sin “u”.
Behaviour -> en yii leo es Behavior.
link
http://www.yiiframework.com/doc/api/
saludos
September 25th, 2009 at 6:15 pm
Saludos Johnny. Tienes toda la razón, ya corregí el texto. Muchas gracias por tu aporte.