PHP

实例化pdo操作类的基础模型类

字号+ 编辑: 呆头鹅甲 修订: 呆头鹅甲 来源: 原创 2018-06-04 13:32:43 我要说两句(0)

这篇文章需要结合本站关于pdo操作类的文章一起看。

继上一篇ccORM里的pdo操作类的代码, 再写一点可实例化这个操作类的基础模型代码, 笔者在yaf框架项目上使用的, 支持手动选择读写和事务连接, 供大伙参考用。

注意: php版本需求 > 7.0

// 基础模型
class BasicModel
{
    protected static $container = [];

    private function initConfig($type)
    {
        switch ($type) {
            case 'r':
                return [
                    'host'       => '192.168.30.7',
                    'port'       => '3306',
                    'user'       => 'read_user',
                    'password'   => 'whatever',
                    'charset'    => 'utf8',
                    'dbname'     => 'database_name',
                    'prefix'     => 'prefix_',
                    'persistent' => 1,
                    'log'        => 1,
                    'redis_ip'   => '我的redis地址',
                    'redis_port' => 6379,
                    'redis_auth' => '我的密码',
                    'redis_db'   => 9,
                ];
                break;
            case 'w':
                return [
                    'host'       => '192.168.30.5',
                    'port'       => '3306',
                    'user'       => 'write_user',
                    'password'   => 'whatever',
                    'charset'    => 'utf8',
                    'dbname'     => 'database_name',
                    'prefix'     => 'prefix_',
                    'persistent' => 1,
                    'log'        => 1,
                    'redis_ip'   => '我的redis地址',
                    'redis_port' => 6379,
                    'redis_auth' => '我的密码',
                    'redis_db'   => 9,
                ];
                break;
            case 't':
                return [
                    'host'        => '192.168.30.5',
                    'port'        => '3306',
                    'user'        => 'transaction_user',
                    'password'    => 'whatever',
                    'charset'     => 'utf8',
                    'dbname'      => 'database_name',
                    'prefix'      => 'prefix_',
                    'persistent'  => 0,
                    'log'         => 1,
                    'transaction' => 1,
                    'redis_ip'   => '我的redis地址',
                    'redis_port' => 6379,
                    'redis_auth' => '我的密码',
                    'redis_db'   => 9,
                ];
                break;
        }
    }

    protected function onRead()
    {
        return \Db_PDO::getInstance($this->initConfig('r'));
    }

    protected function onWrite()
    {
        return \Db_PDO::getInstance($this->initConfig('w'));
    }

    // 事务处理
    protected function onTrans()
    {
        return new \Db_PDO($this->initConfig('t'));
    }

    /**
     * 对象实例化(单例模式)
     * @return static
     */
    public static function getInstance()
    {
        if (empty(static::$container[static::class]) || array_key_exists(static::class, static::$container) == false) {
            static::$container[static::class] = new static();
        }
        return static::$container[static::class];
    }
}


阅完此文,您的感想如何?
  • 鼓掌

    0

  • 鄙视

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.本站QQ群: 2702237

相关课文
  • 解决pecl安装swoole报错 error

  • php针对mysql的orm: 一个轻量级的pdo操作类

  • shell_exec() has been disabled for security reasons 解决方法

  • PHP框架全部显得多余的4种原因

我要说说
网上宾友点评
实例化pdo操作类的基础模型类