3.8 KiB
Componentes
Componente é a parte principal na construção de aplicações Yii. Componentes são instâncias de yii\base\Component, Ou uma classe extendida. As três características principais que os Componentes fornecem a outras classes são:
Separadamente e combinadas, essas características fazem com que as classes no Yii sejam muito mais customizáveis e fáceis de usar. Por Exemplo,
O include yii\jui\DatePicker, um componete de interface do usuário, pode ser usado na view (visão)
Para gerar um date picker
interativo:
use yii\jui\DatePicker;
echo DatePicker::widget([
'language' => 'ru',
'name' => 'country',
'clientOptions' => [
'dateFormat' => 'yy-mm-dd',
],
]);
Os widgets são facilmente escritos porque a classe estende de yii\base\Component.
Enquanto componenetese são muito poderosos, eles são um pouco mais pesados do que um objeto normal, devido ao fato de que é preciso Memória e CPU extra para dar suporte a evento e comportamento funcionalidade em particular. Se o seu componente não precisa dessas duas características, você pode considerar extender a sua classe de componente de yii\base\Object em vez de yii\base\Component. Se o fizer, fará com que seus componentes sejam tão eficientes como objetos normais do PHP, Mas com um suporte adcional para propriedades.
Ao extender sua classe de yii\base\Component ou yii\base\Object, é recomendado que você siga estas convenções:
- Se você sobrescrever o construtor, declare um parâmetro
$config
como último parâmetro do construtor, e em seguida passe este parâmetro para o construtor pai. - Sempre chame o construtor pai no final do seu construtor reescrito.
- Se você sobrescrever o método yii\base\Object::init(),certifique-se de chamar a implementação pai do
init
no início do seu métodoinit
.
Por Exemplo:
<?php
namespace yii\components\MyClass;
use yii\base\Object;
class MyClass extends Object
{
public $prop1;
public $prop2;
public function __construct($param1, $param2, $config = [])
{
// ... initialization before configuration is applied
parent::__construct($config);
}
public function init()
{
parent::init();
// ... initialization after configuration is applied
}
}
Seguindo essas orientações fará com que seus componentes sejam configuraveis quando forem criados. Por Exemplo:
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
// alternatively
$component = \Yii::createObject([
'class' => MyClass::className(),
'prop1' => 3,
'prop2' => 4,
], [1, 2]);
informação: Embora a forma de chamar Yii::createObject() pareça ser mais complicada, ela é mais poderosa porque ela é aplicada no topo de um recipiente de injeção de dependência.
A Classe yii\base\Object inpõe o seguinte cilo de vida do objeto:
- Pré-inicialização dentro do construtor. Você pode definir valores de propriedade padrão aqui.
- Configuração de objeto via
$config
. A configuração pode sobrescrever o valor padrão configurado dentro do construtor. - Pós-inicialização dentro do yii\base\Object::init(). Você pode sobrescrever este método para executar checagens e normalização das propriedades.
- Chamadas de método de objeto.
Os três primeiros passos acontecem dentro do construtor do objeto. Isto significa que uma vez que você instancia a classe (Isto é, um objeto), esse objeto foi inicializado adequadamente.