ArcGIS for Android SDK 目前最新版本为10.2.5 从此版本开始ESRI不在提供Eclipse的插件支持,官方的帮助也针对于Android Studio的支持;本文档主要讲述的内容是最新版本ArcGIS For Android Eclipse环境配置;感兴趣的朋友可以过来看看
yii2需手动在入口脚本顶部加载.env并兜底默认值,yii3由applicationfactory自动加载并经di容器注入,弃用getenv()。

Yii2 和 Yii3 都支持 .env 文件管理环境变量,但加载时机、方式和框架集成度有本质区别——不是“怎么用更方便”,而是“必须按规则走,否则直接失效”。
Yii2:手动加载 + 配置兜底是硬性要求
Yii2 本身完全不读 .env,getenv() 或 $_ENV 能取到值,全靠你在入口脚本里提前加载。漏掉这步,配置里所有 getenv('DB_HOST') 全是空字符串或 false,应用直接崩。
- 在
web/index.php或yii命令入口最顶部(require autoload.php之后、new yii\web\Application()之前)执行:
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__.'/..');<br>$dotenv->load();
-
config/main.php或config/db.php中引用时必须带默认值,例如:'host' => getenv('DB_HOST') ?: 'localhost',<br>'port' => (int)getenv('DB_PORT') ?: 3306,<br>'dsn' => 'mysql:host=' . (getenv('DB_HOST') ?: 'localhost') . ';dbname=' . (getenv('DB_NAME') ?: 'test') -
.env和.env.local分开:前者提交 Git(含通用变量),后者不提交(含密码、密钥等敏感信息) - 数据库 DSN 中的密码若含特殊字符(如
@、/),必须用urlencode()处理,否则 PDO 连接失败
Yii3:原生支持 + DI 注入驱动,不再依赖 getenv()
Yii3 彻底放弃 getenv() 模式,环境变量通过 PSR-11 容器统一注入,.env 加载由框架启动流程自动完成,开发者只需声明依赖。
- 安装
vlucas/phpdotenv后,Yii3 的ApplicationFactory会在启动时自动扫描项目根目录下的.env和.env.local并加载 - 配置不再写
getenv(),而是通过 DI 容器绑定,例如在config/common.php中:
return [<br> 'parameters' => [<br> 'db.host' => $_ENV['DB_HOST'] ?? 'localhost',<br> 'db.port' => (int)($_ENV['DB_PORT'] ?? 3306),<br> ],<br> 'services' => [<br> Psr\Container\ContainerInterface::class => \Yiisoft\Di\Container::class,<br> App\Connection::class => [ // 自定义 DB 类<br> 'class' => App\Connection::class,<br>  '__construct()' => [<br> 'host' => Parameter::from('db.host'),<br> 'port' => Parameter::from('db.port'),<br> ],<br> ],<br> ],<br>];
- 控制器、服务类中直接构造函数注入,无需手动调用
getenv:final class SiteController<br>{<br> public function __construct(<br> private ConnectionInterface $db,<br> private LoggerInterface $logger<br> )<br> { }<br>} - 不再允许隐式访问
Yii::$app->get('db'),所有组件必须显式声明依赖,测试和替换更可靠
关键差异总结
Yii2 是“你负责把变量塞进 PHP 环境,我来读”;Yii3 是“我负责加载变量并注入,你只管用”。前者易出错、难测试;后者强制解耦、天然适配单元测试和容器管理。迁移时最常踩的坑就是:在 Yii3 里还写 getenv() —— 它不会报错,但可能读不到值(尤其在 CLI 下),因为容器未接管该调用。










