一、.env文件说明:

.env文件是环境变量,用于加载该文件中的数据到环境变量中,通常,该文件的权限为600,其他用户不可读取。只允许该服务器进程读取。

常用的.env文件目录范例:
project/
├── .env # 生产环境(不提交Git,添加到.gitignore文件)
├── .env.dev # 开发环境(团队共享)
├── .env.test # 测试环境(CI/CD使用)
└── .env.example # 示例配置(提交Git)

.env文件格式范例:

# .env 文件内容

APP_NAME="Laravel Project"
APP_ENV=production  # 开发环境为local,测试环境为testing
APP_KEY=base64:abcdef123456...  # 应用加密密钥
APP_DEBUG=false  # 生产环境关闭调试
APP_URL=https://example.com

# 数据库配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=prod_db
DB_USERNAME=prod_user
DB_PASSWORD=secure_prod_pass

# 缓存/会话配置
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

# 第三方服务
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@example.com
MAIL_PASSWORD=mailgun_key

二、安装读取.env文件的依赖:


composer require vlucas/phpdotenv

三、MVC开发中,在入口文件index.php中加载.env文件

// 入口文件 index.php

require_once __DIR__ . '/vendor/autoload.php';

// 加载.env(原生PHP)
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load(); // 加载根目录的.env文件

// 初始化MVC应用(如路由、控制器调度)
$app = new App();
$app->run();

四、封装配置

 // config/Config.php(配置层)

class Config {
    // 数据库配置
    public static function database() {
        return [
            'host' => $_ENV['DB_HOST'] ?? 'localhost',
            'dbname' => $_ENV['DB_DATABASE'] ?? 'mvc_app',
            'username' => $_ENV['DB_USERNAME'] ?? 'root',
            'password' => $_ENV['DB_PASSWORD'] ?? '',
            'charset' => 'utf8mb4',
        ];
    }

    // 应用环境配置
    public static function app() {
        return [
            'env' => $_ENV['APP_ENV'] ?? 'development',
            'debug' => $_ENV['APP_DEBUG'] ?? false,
            'url' => $_ENV['APP_URL'] ?? 'http://localhost',
        ];
    }

    // 第三方服务配置(如API密钥)
    public static function api() {
        return [
            'paypal_key' => $_ENV['PAYPAL_KEY'] ?? '',
            'oss_key' => $_ENV['OSS_KEY'] ?? '',
        ];
    }
}