创建Module
Module的创建及在Module中连接Model
创建Module
在项目根目录下的modules文件夹中创建web文件夹, 在web文件夹下创建 ApiModule.php
类, 代码如下:
namespace modules\web;
use Cross\MVC\Module;
class ApiModule extends Module
{
function __construct()
{
parent::__construct();
}
}
先根据模块的命名规则, 指定类的命名空间:
namespace modules\web;
然后使自定义的Module
从Cross\MVC\Module
中继承. 到此就完成了Module的创建, 并初始化了默认的Model
使用Module中的Model
创建好Module后, 就可以通过Module的类成员属性$link
来使用Model了
namespace modules\web;
use Cross\MVC\Module;
class ApiModule extends Module
{
function __construct()
{
parent::__construct();
}
function test()
{
print_r($this->link);
}
}
我们在module中添加了一个方法, 在方法中调用$this->link
来使用默认Model
, 使用方法见相关章节
创建指定Model的实例
Cross\MVC\Module
的构造函数, 接收一个参数用于指定数据库连接类型和名称, 格式如下:
Model类型:配置名称
这里的参数通过数据库配置文件定义, 没定义会抛出一个异常
namespace modules\web;
use Cross\MVC\Module;
class ApiModule extends Module
{
function __construct()
{
parent::__construct('mysql:log');
}
}
此时类的成员属性$link
就是一个连接到log数据库的mysqlModel
实例.
连接多种数据库
在Module中, 可以方便的创建与其他Model的连接, 只需要调用getModel
方法
$this->getModel('Model类型:配置名称');
下面的例子在构造函数中连接了redis:
namespace modules\web;
use Cross\MVC\Module;
use Redis;
class ApiModule extends Module
{
/**
* @var Redis
*/
protected $cache;
function __construct()
{
parent::__construct('mysql:log');
$this->cache = $this->getModel('redis:cache');
}
}
获取当前的数据库连接类型
调用Cross\MVC\Module
中的getLinkType()
可以获取当前的数据库连接类型
$this->getLinkType()
获取当前的数据库连接详细配置
调用Cross\MVC\Module
中的getLinkConfig()
可以获取当前连接的详细配置
$this->getLinkConfig()
获取带前缀的表名
如果在数据库配置中指定了表前缀, 调用此方法可以获取带前缀的表名
$this->getPrefix(表名)
>仅在手写SQL语句时, 需要手动调用此方法获取带前缀的表名