M方法
M方法实例化的时候.默认的是直接实例化\Think\Model类
//使用M方法实例化
$User = M('User');
//和用法$User = new \Think\Model ('User');等效
//执行其他的数据操作
$User->select();
M 方法也支持垮库操作.
//使用M方法实例化,操作db_name中的ot_user表 $User = M('db_name.User','ot_'); //执行其他的数据库操作 $User->select();
D方法
//实例化模型 $User = D('User'); //相当于$User = new \Home\Model\UserModel(); //执行操作 $User -> select();
如果Home\Model\UserModel不存在的话,就会尝试实例化公共模型下的\Common\Model\UserModel类.
D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的\Think\Model基类
C方法
定义了配置文件之后,可以使用系统提供的C方法来读取已有额配置.
- 获取已经设置的参数值:C(‘参数名称’)
$model = C('URL_MODEL');//不区分大小写=url_model
因为配置参数是全局有效的,因此C方法可以在任何地方读取任何配置,即使某个设置参数以及生效过期了
A方法
如果需要跨控制机调用的话,可以单独实例化
默认情况下,A方法实例化的是默认控制器(Controller),如果你要实例化其他的分层控制器的话,可以使用:
//假设当前模块是Home
//实例化Event控制器
$User = A('User');// 等效于new \Home\Event\UserEvent();
$Blog = A('Admin/Blog','Event');// 等效于new \Admin\Event\BlogEvent();
R方法
R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充
R方法的调用格式:
R('[项目://][分组/]模块/操作','参数','控制器层名称')
例如,我们定义了一个操作方法为:
class UserAction extends Action {
public function detail($id){
return M('User')->find($id);
}
}
那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法用于跨模块调用)
$data = R('User/detail',array('5'));
也可以支持跨分组和项目调用,例如:
R('Admin/User/detail',array('5'));
I方法
在web开发过程中,我们经常要获取系统变量或者用户提交的数据.这些数据处理不好就会引起安全隐患,所以tp给我们提供了一个变量获取功能.
我们先看下传统获取方式:
$id = $_GET['id']; // 获取get变量
传统获取方法没有统一的安全机制,后期调整比较麻烦,更好的方式是在框架中统一使用I函数进行变量获取和过滤。
I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下:
I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源'])
echo I('get.id'); // 相当于 $_GET['id']
支持默认值 echo I('get.id',0); // 如果不存在$_GET['id'] 则返回0
采用方法过滤:
// 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串 // 系统默认的变量过滤机制 'DEFAULT_FILTER' => 'htmlspecialchars' echo I('get.name','','htmlspecialchars');