## 接入 `think-orm` >[danger] 只能在 **常驻同步模式** 接入,无法在 **常驻协程模式** 使用,因为 think-orm 的代码里使用了大量的全局变量,在协程中存在全局变量污染的问题。 1. 使用 composer 安装 `think-orm`: ``` composer require topthink/think-orm ``` 2. 新增 `apps\common\libraries\ThinkOrmInitialize` 类: ```php <?php namespace apps\common\libraries; /** * Class ThinkOrmInitialize * @package apps\common\libraries */ class ThinkOrmInitialize { public static function handle() { $dsn = self::parseDSN(env('DB.DSN')); // 数据库配置信息设置 $config = [ // 数据库类型 'type' => $dsn['type'], // 服务器地址 'hostname' => $dsn['host'], // 数据库名 'database' => $dsn['dbname'], // 数据库用户名 'username' => env('DB.USERNAME'), // 数据库密码 'password' => env('DB.PASSWORD'), // 数据库连接端口 'hostport' => $dsn['port'], // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => $dsn['charset'], // 数据库表前缀 'prefix' => 'think_', ]; \think\Db::setConfig($config); } public static function parseDSN($dsn) { $type = strstr($dsn, ':', true); parse_str(str_replace(';', '&', substr(strstr($dsn, ':'), 1)), $data); return ['type' => $type] + $data; } } ``` 3. 在当前应用配置文件中增加 `initialize` 配置项: ```php // 初始化回调 'initialize' => ['apps\common\libraries\ThinkOrmInitialize::handle'], ``` 接下来就可以正常在代码中使用 `think-orm` 了。 ### 官方文档 - https://www.kancloud.cn/manual/thinkphp5_1/353998 - https://github.com/top-think/think-orm