Yii - 入口脚本

  • 简述

    入口脚本负责启动请求处理周期。它们只是用户可以访问的 PHP 脚本。
    下图显示了应用程序的结构 -
    入口脚本结构
    Web 应用程序(以及控制台应用程序)有一个单一的入口脚本。最终用户向入口脚本发出请求。然后入口脚本实例化应用程序实例并将请求转发给它们。
    控制台应用程序的入口脚本通常存储在项目基本路径中并命名为yii.php。Web 应用程序的入口脚本必须存储在 Web 可访问目录下。它通常被称为index.php
    入口脚本执行以下操作 -
    • 定义常量。
    • 注册 Composer 自动加载器。
    • 包括 Yii 文件。
    • 加载配置。
    • 创建和配置应用程序实例。
    • 处理传入的请求。
    以下是基本应用程序模板的入口脚本 -
    
    <?php
       //defining global constants
       defined('YII_DEBUG') or define('YII_DEBUG', true);
       defined('YII_ENV') or define('YII_ENV', 'dev');
     
       //register composer autoloader
       require(__DIR__ . '/../vendor/autoload.php');
       //include yii files
       require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
      
       //load application config
       $config = require(__DIR__ . '/../config/web.php');
      
       //create, config, and process reques
       (new yii\web\Application($config))->run();
    ?>
    
    以下是控制台应用程序的入口脚本 -
    
    #!/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/ 
       */
       //defining global constants
       defined('YII_DEBUG') or define('YII_DEBUG', true);
      
       //register composer autoloader
       require(__DIR__ . '/vendor/autoload.php');
       require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
      
       //load config
       $config = require(__DIR__ . '/config/console.php');
      
       //apply config the application instance 
       $application = new yii\console\Application($config);  
       //process request
       $exitCode = $application->run();
       exit($exitCode);
    ?>
    
    定义全局常量的最佳位置是入口脚本。Yii 常量支持三个 -
    • YII_DEBUG - 定义您是否处于调试模式。如果设置为 true,那么我们将看到更多的日志数据和详细的错误调用堆栈。
    • YII_ENV - 定义环境模式。默认值为产品。可用值为 prod、dev 和 test。它们在配置文件中用于定义不同的数据库连接(本地和远程)或其他值。
    • YII_ENABLE_ERROR_HANDLER - 指定是否启用默认的 Yii 错误处理程序。
    要定义全局常量,使用以下代码 -
    
    //defining global constants 
    defined('YII_DEBUG') or define('YII_DEBUG', true); 
    which is equivalent to: 
    if(!defined('YII_DEBUG')) { 
       define('YII_DEBUG', true); 
    } 
    
    注意- 全局常量应在入口脚本的开头定义,以便在包含其他 PHP 文件时生效。