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 conexão do BD,
e \Yii::$app->cache
para obter o cache primário 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.
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 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"
],
],
]
O yii define um conjunto de componentes de aplicação do core com IDs fixos e configurações padrão. Por exemplo, o componente request é usado para coletar as informações sobre uma requisição do usuário e resolvê-la em uma rota; o componente 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.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.