自动关联与生成
模块就是数据表,ModPHP 会根据数据库结构来自动创建模块类和函数。系统默认自带 user
, file
, category
, post
, comment
五个数据表(模块)。
数据库结构由配置文件 database.php
定义,实际上是一个二维数组(数据表和字段),结构大致如下:
<?php
return array(
'user'=>array(
'user_id' => 'INT(15) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY',
'user_name' => 'VARCHAR(255) NOT NULL',
'user_nickname' => 'VARCHAR(255) NOT NULL',
...
);
添加更多模块或者更改已有模块结构:
编辑 database.php
文件添加数据表和字段,然后执行 mod::update()
方法。系统会自动更新数据库表结构,并自动生成与其对应的模块类文件(如果新增模块)
{module}.class.php
, 存放在 user/classes/
目录中。
模块类:
模块类继承了 mod 类的所有方法。其中包含了一些直接操作数据库记录的方法,如 add(), update(), delete(), get(), getMulti(), search() 等。比如要获取一位 user_id 为 1 的用户,只需要这么做:
<?php
require('mod.php'); //如果在模板文件中,这一步是不需要的
$result = user::get(array('user_id'=>1));
print_r($result['data']); //$result 是一个关联数组,至少包含 success 和 data 两个键值对。success 是一个布尔值,如果获取信息成功则为 true, 否则为 false; data 是一个存储结果的关联数组或错误信息
模块函数:
系统会自动注册与模块对应的相关函数,这些函数包括: 1. _{module}(): 包含挂钩函数、当前分页、总页数等与模块相关信息的函数 2. get_{module}(): 获取单条与模块关联的记录的函数 3. getmulti{module}(): 获取多条与模块关联的记录的函数 4. getsearch{module}(): 搜索(模糊查询)多条与模块关联的记录的函数 5. the_{module}(): 存储当前记录信息的函数 6. {module}_*(): 与数据表字段名对应的直接获取字段数据的函数 7. prev_{module}(): 获取上一条记录的函数 8. next_{module}(): 获取下一条记录的函数 9. {module}_parent(): 获取父记录的函数,数据表存在 {module}parent 字段时才会注册该函数 10. [{module}{ex-table}()](http://modphp.hyurl.com/function-module-ex-table): 获取从表记录的函数,数据表存在外键才会注册
所以获取 user_id = 1
的用户也可以使用下面这种简单的方式:
<?php
if(get_user(1)){ //因为 user_id 是主键,可以直接使用整数,其他参数需要用数组,如 array('user_name'=>'someone')
print_r(the_user());
}
要同时获取多位用户,可以使用下面这种方式:
<?php
while(get_multi_user()){ //同样,你可以为 get_multi_*() 类函数提供一个关联数组作为参数来进行更精确的获取
print_r(the_user());
}