php和tp区别,Thinkphp中M()和D()方法的使用和区别

Thinkphp中M()和D()方法的具体使用和区别:

区别:

M()方法比D()方法效率高,对数据进行简单的CRUD操作,没有复杂的业务逻辑的时候适合用M()方法。

D()方法比M()方法功能更加强大,D()方法会去调用Model中的模型类文件,能对数据进行自动验证,在调用的自定义模型类中进行处理复杂的业务逻辑等强大的操作,使用情况根据功能复杂程度而定,复杂功能用D()方法,D()方法需要配合create()方法一起使用。

M('表名')  //实例化一个模型

D('表名')  //实例化一个模型,并去查找 自定义的模型类,对数据进行验证匹配,如果没有则取调用M()方法。

M()<?php

namespace Admin\Controller;

use Think\Controller;

class TestController extends Controller{

public function index(){

$test = M('test');  //实例化模型,传入数据库表名

$test->select();  //获取数据库test表的所有数据的结果集

}

}

D()<?php

namespace Admin\Controller;

use Think\Controller;

class TestController extends Controller{

public function index(){

$test = D('test');  //实例化模型,传入数据库表名

$data['email'] = 'test@qq.com';

$data['phone'] = '123456789';

//$test->create($data)进行数据验证操作,这一步回去调用模块下的Model文件夹中的TestModel.class.php文件

//再进行数据验证码,这里的$data['email']和$data['phone']中的数组键必须和数据库表的字段一致,否则会出错

if($test->create($data)){

//添加成功,并进行跳转到相应控制器中的方法

if($test->add()){

$this->success('添加成功!',U('控制器/方法'));

}else{

$this->error('添加失败!');

}

}else{

//TestModel.class.php文件中的规则对$data数组数据进行验证,不通过的时候进行失败提示

$this->error($test->getError());

}

}

}

?>

//TestModel.class.php 复杂逻辑处理验证文件代码,这个文件命名中必须是 表名Model.class.php 的规则,不然文件规则会失效

namespace Admin\Model;

use Think\Model;

class TestModel extends Model{

protected  $_validate = array(

array('email','require','邮箱不能为空!'), // 邮箱必须

array('email','','email名称已经存在!',1,'unique',1), // 验证email是否已经存在

array('phone','require','phone不能为空!'), // phone必须

array('phone','','phone名称已经存在!',1,'unique',1), // 验证phone是否已经存在

);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值