thinkphp5 - thinkPHP 数据库 M() 用的多吗?-thinkphp二次开发

thinkPHP中多维数组的遍历方法,thinkphp多维数组_PHP教程

thinkphp常见路径用法分析,thinkphp路径用法 本文实例分析了thinkphp常见路径用法。分享给大家供大家参考。具体如下: 这里介绍的标签主要有: __root__ __self__ __action__ __url__ __app__ __public__ 假如你项目首页的UR...

学完了 thinkPHP C和V 最后看的 操作数据库,
之前学的PHP自带的PDO,感觉也会用了,
现在thinkPHP 也自己带了一套 操作数据库的 类。
我看了看教程,再学习也挺繁琐哦的。。
各种传值格式又都得记,本来学了class MySQLi,后来知道都用pdo,又学了pdo,现在又一个M。。。我都快学串了。

我问问这个thinkPHP 的大M 方法,在你们做项目用的多吗?
比pdo 的方便吗?

我还学习吗。。

回复内容:

学完了 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语法才能解决问题。

你看了文档之后就会感觉用起来很方便啊,大哥,框架的意义在哪里?!不就是让你少写代码吗!话说tp 3.2.3数据库驱动用pdo重写了(完全基于pdo的)

你既然要用Thinkphp框架了肯定首选使用M或者D方法啊!

  • 如果你要实例化模型类文件,就用D

  • 如果不用加载模型类,就用M
    一般情况简单的CURD都用M。根据实际情况来用。希望对你有帮助

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封装好的方法去操作就好了。

我用D比较多

几乎每个项目中都会使用到数据库,而在ThinkPHP此类框架中,一般是将一张表封装成一个对象,而在php中,对象的实例化是需要new类的,代码类似于

//类似于这种
MysqlTableClass $obj_Table =new MysqlTableClass('db_name','table_name');
obj_test=$obj_Table->getOne();

ThinkPHPM函数(这里我不得不纠正下你的说法了,类中的才叫方法,这个M位于公共函数里,所以只能叫函数),封装的就是上面的new操作,返回的直接就是一个对象。

技巧拓展

建议不要使用M方法,因为当你后期需要添加自定义模型的时候,M方法还得一个个的改成D,非常麻烦,而如果你直接使用D方法,则可以避免此类问题。

综上

直接使用D方法即可,本质上就是一个封装而已~

thinkphp常见路径用法分析,thinkphp路径用法_PHP教程

thinkphp常见路径用法分析,thinkphp路径用法 本文实例分析了thinkphp常见路径用法。分享给大家供大家参考。具体如下: 这里介绍的标签主要有: __root__ __self__ __action__ __url__ __app__ __public__ 假如你项目首页的UR...

ThinkPHP项目分组配置方法分析,thinkphp项目_PHP教程

ThinkPHP项目分组配置方法分析,thinkphp项目本文实例讲述了ThinkPHP项目分组配置方法。分享给大家供大家参考,具体如下: 项目分组概述 项目分组是 ThinkPHP 一个重要机制,项目分组功能可以把...

在Nginx上部署ThinkPHP,解决Pathinfo问题

...terMicrosoft YaHei'; font-size:13px; line-height:20px">在Nginx上部署ThinkPHP,解决Pathinfo问题

ThinkPHP项目CMS内容管理系统开发视频教程(302GB)

ThinkPHP背景介绍: ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业级应用开发而诞生的。拥有众多的...

介绍几篇关于thinkPHP视频教程

ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。很多php初学者都在学习这个框架,本专题为你总结了2017年最新的10个thinkphp在线视频教程推荐推荐给php中文网网友们!php中文网推荐的这10个thinkphp视频教程都是高...

在Nginx上部署ThinkPHP,解决Pathinfo有关问题

在Nginx上部署ThinkPHP,解决Pathinfo问题在Nginx上部署ThinkPHP,解决Pathinfo问题其实,要解决nginx不支持pathinfo的问题,有两个解决思路,一是不使用pathinfo模式,二是修改nginx的配置文件,使它支...

总结个人thinkphp学习_PHP教程

本人喜欢一边学习一边记录,这是本人学习thinkphp过程中记录的一些文章,很多都是自己写的,是自己的思考,希望对你能够有所帮助。本帖将会不断更新。 ThinkPHP靠什么盈利 ThinkPHP中初始化函数initialize是怎...

求助ThinkPHP无法自动运行

... 回复讨论(解决方案) 错误显示:找不到 ThinkPHPCommon/runtime.php 这却的位置是 ThinkPHP/Common/runtime.php 由此可知,你使用的是 ThinkPHP 2 而不是 ThinkPHP 3 需 defined('THINK_P

thinkphp框架下404页面设置 thinkphp支持php5.2 thinkphp文件 thinkphp tags.ph

...器名称时的一种报错行为的优化。第一步:在thinkphp框架中的Home/Comtroller中建一个EmptyController.class.php,其代码如下:

ThinkPHP静态缓存简单配置和使用方法详解,thinkphp静态_PHP教程

ThinkPHP静态缓存简单配置和使用方法详解,thinkphp静态本文实例讲述了ThinkPHP静态缓存简单配置和使用方法。分享给大家供大家参考,具体如下: 根据ThinkPHP官方手册:ThinkPHP内置了静态缓存类,通过静态缓存规...