Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

6.8 KiB

Componentes de Aplicação

Aplicações são service locators. Elas hospedam um conjunto de assim chamados componentes de aplicação que fornecem diferentes serviços para o processamento de requisições. Por exemplo, o componente urlManager é responsável pelo roteamento de requisições Web aos controllers adequados; o componente db fornece serviços relacionados a bancos de dados; e assim por diante.

Cada componente de aplicação tem um ID que o identifica de maneira única dentre os outros componentes de uma mesma aplicação. Você pode acessar um componente de aplicação através da expressão

\Yii::$app->componentID

Por exemplo, você pode usar \Yii::$app->db para obter a yii\db\Connection, e \Yii::$app->cache para obter o yii\caching\Cache registrado com a aplicação.

Um componente de aplicação é criado na primeira vez em que é acessado através da expressão acima. Quaisquer acessos posteriores retornarão a mesma instância do componente.

Componentes de aplicação podem ser quaisquer objetos. Você pode registrá-los configurando a propriedade yii\base\Application::components nas configurações da aplicação. Por exemplo,

[
    'components' => [
        // registra o componente "cache" usando um nome de classe
        'cache' => 'yii\caching\ApcCache',

        // registra o componente "db" usando um array de configuração
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=demo',
            'username' => 'root',
            'password' => '',
        ],

        // registra o componente "search" usando uma função anônima
        'search' => function () {
            return new app\components\SolrService;
        },
    ],
]

Informação: Embora você possa registrar quantos componentes de aplicação você quiser, você deveria fazer isso com juízo. Componentes de aplicação são como variáveis globais. Usar componentes de aplicação demais pode tornar seu código potencialmente mais difícil de testar e manter. Em muitos casos, você pode simplesmente criar um componente local e utilizá-lo quando necessário.

Components de Inicialização

Conforme mencionado acima, um componente de aplicação só será instanciado quando ele estiver sendo acessado pela primeira vez. Se ele nunca for acessado durante uma requisição, ele não será instanciado. No entanto, algumas vezes você pode querer instanciar um componente de aplicação em todas as requisições, mesmo que ele não seja explicitamente acessado. Para fazê-lo, você pode listar seu ID na propriedade yii\base\Application::bootstrap da aplicação.

Por exemplo, a configuração de aplicação a seguir assegura-se que o componente log sempre esteja carregado:

[
    'bootstrap' => [
        'log',
    ],
    'components' => [
        'log' => [
            // configuração para o componente "log"
        ],
    ],
]

Componentes de Aplicação do Core

O yii define um conjunto de componentes de aplicação do core com IDs fixos e configurações padrão. Por exemplo, o componente yii\web\Application::request é usado para coletar as informações sobre uma requisição do usuário e resolvê-la em uma rota; o componente yii\base\Application::db representa uma conexão do banco de dados através da qual você pode realizar consultas. É com a ajuda destes componentes de aplicação do core que as aplicações Yii conseguem tratar as requisições dos usuários.

Segue abaixo uma lista dos componentes de aplicação pré-definidos do core. Você pode configurá-los e personalizá-los como você faz com componentes de aplicação normais. Quando você estiver configurando um componente de aplicação do core, se você não especificar sua classe, a padrão será utilizada.