<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] * * * * * # 1 數據庫連接 >>數據庫類(Db)主要用來根據數據庫配置(database)建立數據庫的連接 ## Db::connect() >>數據庫連接入口 >創建對配置唯一的連接對象 ~~~ public static function connect($config = [], $name = false) { if (false === $name) { $name = md5(serialize($config)); } if (true === $name || !isset(self::$instance[$name])) { // 解析連接參數 支持數組和字符串 $options = self::parseConfig($config); if (empty($options['type'])) { throw new \InvalidArgumentException('Underfined db type'); } $class = false !== strpos($options['type'], '\\') ? $options['type'] : '\\think\\db\\connector\\' . ucwords($options['type']); // 記錄初始化信息 if (App::$debug) { Log::record('[ DB ] INIT ' . $options['type'], 'info'); } if (true === $name) { return new $class($options); } else { self::$instance[$name] = new $class($options); } } return self::$instance[$name]; } ~~~ ## Db::parseConfig() >> 數據庫數組配置解析 > 獲取配置中的數據庫配置字段 ~~~ private static function parseConfig($config) { if (empty($config)) { $config = Config::get('database'); } elseif (is_string($config) && false === strpos($config, '/')) { // 支持讀取配置參數 $config = Config::get($config); } if (is_string($config)) { return self::parseDsn($config); } else { return $config; } } ~~~ ## Db::parseDsn() >> 數據庫字符串配置解析 >解析DSN格式數據庫配置 ~~~ private static function parseDsn($dsnStr) { $info = parse_url($dsnStr); if (!$info) { return []; } $dsn = [ 'type' => $info['scheme'], 'username' => isset($info['user']) ? $info['user'] : '', 'password' => isset($info['pass']) ? $info['pass'] : '', 'hostname' => isset($info['host']) ? $info['host'] : '', 'hostport' => isset($info['port']) ? $info['port'] : '', 'database' => !empty($info['path']) ? ltrim($info['path'], '/') : '', 'charset' => isset($info['fragment']) ? $info['fragment'] : 'utf8', ]; if (isset($info['query'])) { parse_str($info['query'], $dsn['params']); } else { $dsn['params'] = []; } return $dsn; } ~~~ # 2 數據庫接口 ## Db::__callStatic() >>對于不存在Db類的靜態方法的調用則調用連接對象的方法 >連接對象的相關操作見 [數據庫連接](http://www.hmoore.net/zmwtp/tp/212778) 章節 ~~~ public static function __callStatic($method, $params) { // 自動初始化數據庫 return call_user_func_array([self::connect(), $method], $params); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看