2 关注者

入口脚本

入口脚本是应用程序引导过程的第一步。一个应用程序(无论是 Web 应用程序还是控制台应用程序)都有一个唯一的入口脚本。最终用户向入口脚本发出请求,这些请求会实例化应用程序实例并将请求转发给它们。

Web 应用程序的入口脚本必须存储在 Web 可访问目录下,以便最终用户可以访问它们。它们通常名为 index.php,但也可以使用任何其他名称,只要 Web 服务器可以找到它们即可。

控制台应用程序的入口脚本通常存储在应用程序的 基本路径 下,并命名为 yii(带 .php 后缀)。它们应该被设置为可执行的,以便用户可以通过命令 ./yii <route> [arguments] [options] 运行控制台应用程序。

入口脚本主要做以下工作

Web 应用程序

以下是 基本 Web 项目模板 中入口脚本的代码。

<?php

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 class file
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';

// load application configuration
$config = require __DIR__ . '/../config/web.php';

// create, configure and run application
(new yii\web\Application($config))->run();

控制台应用程序

类似地,以下是控制台应用程序的入口脚本的代码

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

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 class file
require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';

// load application configuration
$config = require __DIR__ . '/config/console.php';

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

定义常量

入口脚本是定义全局常量的最佳位置。Yii 支持以下三种常量

  • YII_DEBUG:指定应用程序是否在调试模式下运行。在调试模式下,应用程序将保留更多日志信息,并在抛出异常时显示详细的错误调用堆栈。因此,调试模式主要在开发过程中使用。YII_DEBUG 的默认值为 false
  • YII_ENV:指定应用程序运行在哪个环境中。这将在 配置 部分中详细介绍。YII_ENV 的默认值为 'prod',表示应用程序运行在生产环境中。
  • YII_ENABLE_ERROR_HANDLER:指定是否启用 Yii 提供的错误处理程序。此常量的默认值为 true

在定义常量时,我们通常使用以下代码

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

等效于以下代码

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

显然前者更简洁,更容易理解。

常量定义应该放在入口脚本的最开头,这样当其他 PHP 文件被包含时它们才能生效。

发现错别字或您认为此页面需要改进?
在 github 上编辑 !