structure-entry-scripts.md 4.63 KB
Newer Older
david committed
1 2
Scripts de Entrada
==================
Larnu committed
3

david committed
4 5 6
Los scripts de entrada son el primer eslabón en el proceso de arranque de la aplicación. Una aplicación (ya sea una 
aplicación Web o una aplicación de consola) tiene un único script de entrada. Los usuarios finales hacen peticiones al 
script de entrada que instancia instancias de aplicación y remite la petición a estos.
Larnu committed
7

david committed
8 9 10
Los scripts de entrada para aplicaciones Web tiene que estar alojado bajo niveles de directorios accesibles para la Web 
de manera que puedan ser accesibles para los usuarios finales. Normalmente se nombra como `index.php`, pero también se 
pueden usar cualquier otro nombre, los servidores Web proporcionados pueden localizarlo.
Larnu committed
11

david committed
12 13 14 15
El script de entrada para aplicaciones de consola normalmente está alojado bajo la 
[ruta base](structure-applications.md) de las aplicaciones y es nombrado como `yii` (con el sufijo `.php`). Estos 
deberían ser ejecutables para que los usuarios puedan ejecutar las aplicaciones de consola a través del comando 
`./yii <ruta> [argumentos] [opciones]`.
Larnu committed
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

El script de entrada principalmente hace los siguientes trabajos:

* Definir las constantes globales;
* Registrar el [cargador automático de Composer](http://getcomposer.org/doc/01-basic-usage.md#autoloading);
* Incluir el archivo de clase [[Yii]];
* Cargar la configuración de la aplicación;
* Crear y configurar una instancia de [aplicación](structure-applications.md);
* Llamar a [[yii\base\Application::run()]] para procesar la petición entrante.

## Aplicaciones Web <a name="web-applications"></a>

El siguiente código es el script de entrada para la [Plantilla de Aplicación web Básica](start-installation.md).

```php
<?php

defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

// registrar el cargador automático de Composer
require(__DIR__ . '/../vendor/autoload.php');

// incluir el fichero de clase Yii
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

// cargar la configuración de la aplicación
$config = require(__DIR__ . '/../config/web.php');

// crear, configurar y ejecutar la aplicación
(new yii\web\Application($config))->run();
```

## Aplicaciones de consola <a name="console-applications"></a>

De la misma manera, el siguiente código es el script de entrada para la [aplicación de consola](tutorial-console.md):

```php
#!/usr/bin/env php
<?php
/**
 * Yii console bootstrap file.
 *
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

defined('YII_DEBUG') or define('YII_DEBUG', true);

// el fcgi no tiene STDIN y STDOUT definidos por defecto
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r'));
defined('STDOUT') or define('STDOUT', fopen('php://stdout', 'w'));

// registrar el cargador automático de Composer
require(__DIR__ . '/vendor/autoload.php');

// incluir el fichero de clase Yii
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');

// cargar la configuración de la aplicación
$config = require(__DIR__ . '/config/console.php');

$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
```

## Definición de Constantes <a name="defining-constants"></a>

El script de entrada es el mejor lugar para definir constantes globales. Yii soporta las siguientes tres constantes:

david committed
88 89 90 91 92 93 94 95 96 97
* `YII_DEBUG`: especifica si la aplicación se está ejecutando en modo depuración. Cuando esta en modo depuración, una 
aplicación mantendrá más información de registro, y revelará detalladas pilas de errores si se lanza una excepción. Por 
esta razón, el modo depuración debería ser usado principalmente durante el desarrollo. El valor por defecto de 
'YII_DEBUG' es falso.
* `YII_ENV`: especifica en que entorno se esta ejecutando la aplicación. Se puede encontrar una descripción más 
detallada en la sección [Configuraciones](concept-configurations.md#environment-constants).
El Valor por defecto de `YII_ENV` es `'prod'`, que significa que la aplicación se esta ejecutando en el entorno de 
producción.
* `YII_ENABLE_ERROR_HANDLER`: especifica si se habilita el gestor de errores proporcionado por Yii. El valor 
predeterminado de esta constante es verdadero.
Larnu committed
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

Cuando se define una constante, a menudo se usa código como el siguiente:

```php
defined('YII_DEBUG') or define('YII_DEBUG', true);
```

que es equivalente al siguiente código:

```php
if (!defined('YII_DEBUG')) {
    define('YII_DEBUG', true);
}
```

Claramente el primero es más breve y fácil de entender.

david committed
115 116
La definición de constantes debería hacerse al principio del script de entrada para que pueda tener efecto cuando se 
incluyan otros archivos PHP.