Tp方法M、I、C的使用

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');

猜你喜欢

转载自blog.csdn.net/weixin_44264692/article/details/90168735
今日推荐