自定义数据库连接类型


在cp中除了默认支持的支持数据库连接类型外, 还可以自定义数据库连接类型并使用自己的Model

我们以扩展支持medoo为例, 我们先下载Medoo的最新版到项目的lib目录

├─app
├─config
├─docs
├─htdocs
├─lib
│  └─ medoo.php

然后修改数据库配置文件

/**
 * mysql
 */
$mysql_link = array(
    'host' => '127.0.0.1',
    'port' => '3306',
    'user' => 'root',
    'prefix' => 'cp_',
    'pass' => '123456',
    'charset' => 'utf8',
);

$db = $mysql_link;
$db['name'] = 'test';

return array(
    'mysql' => array(
        'db' => $db,
    ),

    'medoo' => array(
        'db' => function() use ($db) {
            Cross\Core\Loader::import('::lib/medoo.php');
            $medoo = new medoo(array(
                'database_type' => 'mysql',
                'database_name' => $db['name'],
                'server' => $db['host'],
                'username' => $db['user'],
                'password' => $db['pass'],
                'charset' => $db['charset'],
                'port' => $db['port'],
                'prefix' => $db['prefix'],
                'option' => array(
                    PDO::ATTR_CASE => PDO::CASE_NATURAL
                )
            ));

            return $medoo;
        }
    )
);

我们新建一个测试文件modules\test\MedooModule.php, 在Module中连接medoo:db, 代码如下:

namespace modules\test;

use Cross\MVC\Module;

class MedooModule extends Module
{
    function __construct()
    {
        parent::__construct('medoo:db');
    }

    function hi()
    {
        return $this->link->select('acl_menu', '*');         
    }
}

在控制器中就可以使用medoo提供的数据库查询功能了

>CP的Module可以扩展支持任意的Model