本文介绍几个有助于提高开发效率和质量的ThinkPHP专用composer包, 它们都是packgist上最流行的composer包为与ThinkPHP进行无缝集成而特别封装. 安装后, 无需修改框架源码, 无需或仅需修改一下配置文件, 便立即可用.
本文假设读者有能力正常使用composer
环境隔离 dotenv
真实世界的开发往往是这样, 多个团队成员共同开发, 线上线下的代码通过版本控制系统保持一致.
但你无法保证也没理由要求所有机器上的应用配置一致. 例如,要求所有成员使用相同的本地数据库用户名和密码是不合理的.
线上线下使用相同的数据库配置更加不合理.
我们有很多种方式避免这种问题, 一种常见的方法是, 将配置文件重命名为config.example.php, 然后在每个部署的环境再重命名为config.php,并在分发时排除这个文件.
这种方法很容易实现,但缺点是他是静态的. 每当你增加了一项配置, 或者减少了一项配置, 都需要告诉别人手动处理config.php. 否则, 它的程序可能无法正常运行.
通过专门的环境配置区分不同的部署环境,是另一种被广泛采用的方案. 它的原理很简单: 不同的部署环境中, 需要区别的配置往往非常有限, 所有将config.php纳入版本控制或者分发包中更合理.
这样config.php有变化时,其他环境中的应用可以第一时间更新. 那有限的几个有环境有关配置, 往往都是诸如数据库配置这种必不可少的. 将它们单独隔离出来更加合理. 通常, 实施这种方案会把
隔离的配置放在一个名为.env
的文件中. 因此这种方案, 称为 DotEnv.
Packgist.org 中的 php-dotenv 是一个非常棒的包, 很适合与TP集成. think-dotenv 包已经完成了集成, 所以你可以拿来就用:
composer require snowair/think-dotenv:dev-master
修改 Common/Conf/tags.php
return array( 'app_init'=>array( 'Snowair\Think\Behavior\HookAgent' ) )
在项目根目录下创建.env
文件, 配置内容以 key=value 的格式逐行书写,例如:
DB_HOST=localhost
DB_NAME