Componentes de la Aplicación

Las aplicaciones son service locators (localizadores de servicios). Ellas albergan un grupo de los llamados componentes de aplicación que proveen diferentes servicios para procesar el request (petición). Por ejemplo, el componente urlManager es responsable por rutear Web requests (peticiones) a los controladores apropiados; el componente db provee servicios relacionados a base de datos; y así sucesivamente.

Cada componente de la aplicación tiene un ID que lo identifica de forma inequívoca de otros en la misma aplicación. Puedes acceder a un componente de la aplicación con la siguiente expresión:

\Yii::$app->ComponentID

Por ejemplo, puedes utilizar \Yii::$app->db para obtener la [[yii\db\Connection|conexión a la base de datos]], y \Yii::$app->cache para obtener el [[yii\caching\Cache|cache primario]] registrado con la aplicación.

Estos componentes pueden ser cualquier objeto. Puedes registrarlos configurando la propiedad [[yii\base\Application::components]] en las configuraciones de la aplicación. Por ejemplo:

[
    'components' => [
        // registra el componente "cache" utilizando el nombre de clase
        'cache' => 'yii\caching\ApcCache',

        // registra el componente "db" utilizando un array de configuración
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=demo',
            'username' => 'root',
            'password' => '',
        ],

        // registra el componente "search" utilizando una función anónima
        'search' => function () {
            return new app\components\SolrService;
        },
    ],
]

Información: A pesar de que puedes registrar tantos componentes como desees, deberías hacerlo con criterio. Los componente de la aplicación son como variables globales. Abusando demasiado de ellos puede resultar en un código más difícil de mantener y testear. En muchos casos, puedes simplemente crear un componente local y utilizarlo únicamente cuando sea necesario.

Componentes del Núcleo de la Aplicación

Yii define un grupo de componentes del núcleo con IDs fijos y configuraciones por defecto. Por ejemplo, el componente [[yii\web\Application::request|request]] es utilizado para recolectar información acerca del request del usuario y resolverlo en una ruta; el componente [[yii\base\Application::db|db]] representa una conexión a la base de datos a través del cual realizar consultas a la misma. Es con ayuda de estos componentes del núcleo que Yii puede manejar los request del usuario.

A continuación, hay una lista de componentes predefinidos en el núcleo. Puedes configurarlos y personalizarlos como lo haces con componentes normales de la aplicación. Cuando configuras un componente del núcleo, si no especificas su nombre de clase, la clase por defecto será utilizada.

  • [[yii\web\AssetManager|assetManager]]: maneja los assets bundles y su publicación. Consulta la sección Menajando Assets para más detalles.
  • [[yii\db\Connection|db]]: representa una conexión a la base de datos a través de la cual puedes realizar consultas a la misma. Ten en cuenta que cuando configuras este componente, debes especificar el nombre de clase así como otras propiedades requeridas por el mismo, como [[yii\db\Connection::dsn]]. Por favor consulta la sección Data Access Objects para más detalles.
  • [[yii\base\Application::errorHandler|errorHandler]]: maneja errores y excepciones de PHP. Por favor consulta la sección Handling Errors para más detalles.
  • [[yii\base\Formatter|formatter]]: da formato a los datos cuando son mostrados a los usuarios. Por ejemplo, un número puede ser mostrado usando un separador de miles, una fecha en una forma extensa. Por favor consulta la sección Formato de Datos para más detalles.
  • [[yii\i18n\I18N|i18n]]: soporta traducción y formato de mensajes. Por favor consulta la sección Internacionalización para más detalles.
  • [[yii\log\Dispatcher|log]]: maneja a dónde dirigir los logs. Por favor consulta la sección Logging para más detalles.
  • [[yii\swiftmailer\Mailer|mail]]: soporta construcción y envío de emails. Por favor consulta la sección Enviando Emails para más detalles.
  • [[yii\base\Application::response|response]]: representa la respuesta enviada a los usuarios. Por favor consulta la sección Responses para más detalles.
  • [[yii\base\Application::request|request]]: representa el request recibido de los usuarios. Por favor consulta la sección Requests para más detalles.
  • [[yii\web\Session|session]]: representa la información de sesión. Este componente sólo está disponible en [[yii\web\Application|alpicaciones Web]]. Por favor consulta la sección Sessions and Cookies para más detalles.
  • [[yii\web\UrlManager|urlManager]]: soporta el parseo y generación de URLs. Por favor consulta la sección URL Parsing and Generation para más detalles.
  • [[yii\web\User|user]]: representa la información e autenticación del usuario. Este componente sólo está disponible en [[yii\web\Application|aplicaciones Web]] Por favor consulta la sección Autenticación para más detalles.
  • [[yii\web\View|view]]: soporta el renderizado de las vistas. Por favor consulta la sección Vistas para más detalles.