lunes, 19 de enero de 2015

Componentes

Los componentes son los principales bloques de construcción de aplicaciones Yii. Los componentes son instancias de yii\base\Component o una clase extendida. Las tres características principales que los componentes proporcionan a otras clases son:

  • Propiedades
  • Eventos
  • Comportamientos (Behaviors)

Por separado y en combinación, estas características hacen clases Yii mucho más personalizables y fáciles de utilizar. Por ejemplo, si requerimos presentar en nuestra vista un selector de fechas, podemos incluir el widget de selección de fecha.

use yii\jui\DatePicker;

echo DatePicker::widget([
    'language' => 'es',
    'name'  => 'fecha',
    'clientOptions' => [
        'dateFormat' => 'yy-mm-dd',
    ],
]);

Las propiedades de los widgets se pueden modificar fácilmente la clase se extiende de yii\base\Component.

Los componentes son muy potentes, pero son un poco más pesados que los objetos normales, debido al hecho de que se necesita memoria adicional y tiempo de CPU para apoyar el evento y el comportamiento de la funcionalidad en particular. Si nuestros componentes no necesitan estas dos características (eventos y comportamientos), se puede considerar la ampliación de nuestro componente a partir de yii\base\Object en lugar de yii\base\Component. Al hacer esto, nuestros componentes serán tan eficientes como objetos normales de PHP, pero con mayor soporte para propiedades.

Cuando hagamos una clase que se extiende de yii\base\Component o yii\base\Object, se recomiendan las siguientes convenciones:

Si se sobrescribe el constructor, especificar el parámetro $config como el último parámetro del constructor, y luego pasar este parámetro al constructor padre.
Siempre llamar al constructor padre al final del constructor sobrescrito.
Si se sobrescribe el método yii\base\Object::init() hay que asegurarse de llamar a la implementación padre de init al principio de nuestro método init.

namespace yii\components\MyClass;

use yii\base\Object;

class MyClass extends Object{
    public $prop1;
    public $prop2;

    public function __construct($param1$param2$config = [])
    {
        // ... inicialización antes de que la configuración esté aplicada

        parent::__construct($config);
    }

    public function init()
    {
        parent::init();

        // ... inicialización después de que la configuración es aplicada
    }
}

Siguiendo estas directrices, haremos que nuestros componentes sean configurables cuando sean creados. Por ejemplo:

$component = new MyClass(12, ['prop1' => 3'prop2' => 4]);
// alternativamente$component = \Yii::createObject([
    'class' => MyClass::className(),
    'prop1' => 3,
    'prop2' => 4,
], [12]);

Información: Si bien el enfoque de llamar a Yii::createObject() parece más complicado, es más potente porque se implementa en la parte superior de un contenedor de inyección de dependencias.

La clase yii\base\Object forza al siguiente ciclo de vida:

  1. Pre-inicialización dentro del constructor. Se puede establecer valores de propiedades por defecto aquí.
  2. Configuración de objetos a través de $config . La configuración puede sobrescribir los valores predeterminados establecidos en el constructor.
  3. Post-inicialización dentro de init(). Se puede reemplazar este método para realizar comprobaciones de validez y la normalización de las propiedades.
  4. Llamadas de los métodos del objeto.


Los tres primeros pasos suceden en el constructor del objeto. Esto significa que una vez que se tiene una instancia de clase (es decir, un objeto), el objeto ha sido inicializado a un estado adecuado y fiable.


También te puede interesar:
Configuraciones
Comportamientos (Behaviors)
Eventos
Propiedades

No hay comentarios.:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.