84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
学完了 thinkPHP C和V 最后看的 操作数据库,之前学的PHP自带的PDO,感觉也会用了,现在thinkPHP 也自己带了一套 操作数据库的 类。我看了看教程,再学习也挺繁琐哦的。。各种传值格式又都得记,本来学了class MySQLi,后来知道都用pdo,又学了pdo,现在又一个M。。。我都快学串了。
我问问这个thinkPHP 的大M 方法,在你们做项目用的多吗?比pdo 的方便吗?
我还学习吗。。
我没用过TP,不是很清楚里面的M是什么,但是还是能指出:你理解有误,这是两件事情。学PHP的人肯定都要会用PDO或者Mysqli,这根本不存在学习的问题,文档就在那里,会用就行,需要花时间学习的是SQL语法。而M阿D阿这种东西是另外一层封装,它们通常用来解决以下问题:1- 写sql很麻烦(例如字段清单),越长的sql维护起来也越麻烦2- 拼凑sql的时候更麻烦3- 不同的人写的sql不同,造成表、字段别名不一致,容易带来问题4- sql注入5- 等等
对于相同功能,PDO方式可能如下:
$db = new PDO(); $row = $db->query('SELECT * FROM `users` WHERE `id` = 5')->fetchRow();
使用M的话可能会类似:
$row = M('User')->where(array('id' => 5))->findRow(); //M('User')可能等效于new User,而User是一个继承与Model的类
简短的说,各种框架都想了各种方法避免开发人员用直接写SQL语句的方式访问数据库,明白这个原理就行了,不需要特别的学习什么,需要的时候查手册就好了,没必要记住。而且这种东西出了问题一样是SQL异常,必须掌握SQL语法才能解决问题。
thinkphp里面有两种模型调用方式,M()和D(),比如操作用户表:
M('user')->add(array('name' => 'zhangsan')); D('**U**ser')->add(array('name' => 'lisi'));
注意D('User')中user首字母大写。两者的区别是,D()可以由你自己撰写扩展的模型操作,而M()是thinkPHP内置的方法,也就是说D()可实现功能扩展,而M()功能不可扩展,性能上D()也就比M()弱了一些。
你学PHP当然要对pdo和mysqli方法都有所了解,但是在具体的项目中,用thinkPHP封装好的方法去操作就好了。
你看了文档之后就会感觉用起来很方便啊,大哥,框架的意义在哪里?!不就是让你少写代码吗!话说tp 3.2.3数据库驱动用pdo重写了(完全基于pdo的)
你既然要用Thinkphp框架了肯定首选使用M或者D方法啊!
如果你要实例化模型类文件,就用D
如果不用加载模型类,就用M一般情况简单的CURD都用M。根据实际情况来用。希望对你有帮助
CURD
我用D比较多
几乎每个项目中都会使用到数据库,而在ThinkPHP此类框架中,一般是将一张表封装成一个对象,而在php中,对象的实例化是需要new类的,代码类似于
ThinkPHP
//类似于这种 MysqlTableClass $obj_Table =new MysqlTableClass('db_name','table_name'); obj_test=$obj_Table->getOne();
而ThinkPHP的M函数(这里我不得不纠正下你的说法了,类中的才叫方法,这个M位于公共函数里,所以只能叫函数),封装的就是上面的new操作,返回的直接就是一个对象。
M
建议不要使用M方法,因为当你后期需要添加自定义模型的时候,M方法还得一个个的改成D,非常麻烦,而如果你直接使用D方法,则可以避免此类问题。
D
直接使用D方法即可,本质上就是一个封装而已~
m只不过不会实例化model而已啊
我没用过TP,不是很清楚里面的M是什么,但是还是能指出:你理解有误,这是两件事情。
学PHP的人肯定都要会用PDO或者Mysqli,这根本不存在学习的问题,文档就在那里,会用就行,需要花时间学习的是SQL语法。
而M阿D阿这种东西是另外一层封装,它们通常用来解决以下问题:
1- 写sql很麻烦(例如字段清单),越长的sql维护起来也越麻烦
2- 拼凑sql的时候更麻烦
3- 不同的人写的sql不同,造成表、字段别名不一致,容易带来问题
4- sql注入
5- 等等
对于相同功能,PDO方式可能如下:
使用M的话可能会类似:
简短的说,各种框架都想了各种方法避免开发人员用直接写SQL语句的方式访问数据库,明白这个原理就行了,不需要特别的学习什么,需要的时候查手册就好了,没必要记住。而且这种东西出了问题一样是SQL异常,必须掌握SQL语法才能解决问题。
thinkphp里面有两种模型调用方式,M()和D(),比如操作用户表:
注意D('User')中user首字母大写。两者的区别是,D()可以由你自己撰写扩展的模型操作,而M()是thinkPHP内置的方法,也就是说D()可实现功能扩展,而M()功能不可扩展,性能上D()也就比M()弱了一些。
你学PHP当然要对pdo和mysqli方法都有所了解,但是在具体的项目中,用thinkPHP封装好的方法去操作就好了。
你看了文档之后就会感觉用起来很方便啊,大哥,框架的意义在哪里?!不就是让你少写代码吗!话说tp 3.2.3数据库驱动用pdo重写了(完全基于pdo的)
你既然要用Thinkphp框架了肯定首选使用M或者D方法啊!
如果你要实例化模型类文件,就用D
如果不用加载模型类,就用M
一般情况简单的
CURD
都用M。根据实际情况来用。希望对你有帮助我用D比较多
几乎每个项目中都会使用到数据库,而在
ThinkPHP
此类框架中,一般是将一张表封装成一个对象,而在php中,对象的实例化是需要new类的,代码类似于而
ThinkPHP
的M
函数(这里我不得不纠正下你的说法了,类中的才叫方法,这个M位于公共函数里,所以只能叫函数),封装的就是上面的new操作,返回的直接就是一个对象。技巧拓展
建议不要使用
M
方法,因为当你后期需要添加自定义模型的时候,M
方法还得一个个的改成D
,非常麻烦,而如果你直接使用D
方法,则可以避免此类问题。综上
直接使用D方法即可,本质上就是一个封装而已~
m只不过不会实例化model而已啊