最近Bose让修改之前做的一个项目,全部是一行一行敲出来的,现在是想用一下thinkcmf这个框架,但是又不想去修改相互的数据库结构,毕竟哪也是自己的心血。所以就想着在不改变原框架的情况下,获取到我之前数据库的信息。而且也还要想助手函数那样简单操作。度娘了一下,还是觉得用facade静态代理这个方法比较好。
第一步
首先,创建一个common文件夹,在里面创建一个commonother.php文件,因为我前后端都会用到,所以就先这么放着吧!然后将公共的业务逻辑放敲进去;
namespace app\common;
use think\db;
class Connectother
{
//测试专用
public function hello($name="abc"){
return 'hello'.$name;
}
/*
* 链接其它数据库
* */
public function connect(){
$db = Db::connect([
'type' => 'mysql',
'hostname' => 'localhost',
'database' => 'mygrab',
'username' => 'root',
'password' => 'root',
'hostport' => '3306',
'charset' => 'utf8',
]);
return $db;
}
/**
创建链接方法
*/
public function con($dataname){
$data =$this->connect()->table($dataname);
return $data;
}
}
第二步
在app目录下创建一个facade文件夹,在里面创建一个commonother.php文件,再把代码敲进去
<?php
namespace app\facade;
use think\facade;
class Connectother extends facade
{
protected static function getFacadeClass()
{
return '\app\common\Connectother';
}
}
第三步
在需要的点将facade类引入,代码敲进去
<?php
namespace app\grab\controller;
use cmf\controller\AdminBaseController;
use app\facade\Connectother as con; //一定要引入类文件
class AdminShowdataController extends AdminBaseController
{
public function showdata()
{
$datas =con::con('allshow')->limit(0,5)->select(); //好了,这就可以看见数据了
var_dump($datas);
return $this->fetch();
}
}
最开始的时候建议先试一下hello()方法,看是不是能正常,然后再去调用其他方法。
好了,在相互不影响数据库结构的情况下,完成了整合。完美