问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ThinkPHP 中系统函数有哪些

发布网友 发布时间:2022-04-06 02:01

我来回答

3个回答

热心网友 时间:2022-04-06 03:31

首先给大家介绍ThinkPHP函数详解:M方法 M方法用于实例化一个基础模型类,和D方法的区别在于: 1、不需要自定义模型类,减少IO加载,性能较好; 2、实例化后只能调用基础模型类(默认是Model类)中的方法; 3、可以在实例化的时候指定表前缀、数据库和数据库的连接信息; D方法的强大则体现在你封装的自定义模型类有多强,不过随着新版ThinkPHP框架的基础模型类的功能越来越强大,M方法也比D方法越来越实用了。 M方法的调用格式: M('[基础模型名:]模型名','数据表前缀','数据库连接信息') 我们来看下M方法具体有哪些用法: 1、实例化基础模型(Model) 类 在没有定义任何模型的时候,我们可以使用下面的方法实例化一个模型类来进行操作: //实例化User模型 $User = M('User'); //执行其他的数据操作 $User->select(); 这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的CURD操作。 $User = M('User'); 其实等效于: $User = new Model('User'); 表示操作think_user表。M方法和D方法一样也有单例功能,多次调用并不会重复实例化。M方法的模型名参数在转换成数据表的时候会自动转换成小写,也就是说ThinkPHP的数据表命名规范是全小写的格式。 2、实例化其他公共模型类 第一种方式实例化因为没有模型类的定义,因此很难封装一些额外的逻辑方法,不过大多数情况下,也许只是需要扩展一些通用的逻辑,那么就可以尝试下面一种方法。 $User = M('CommonModel:User'); 改用法其实等效于: $User = new CommonModel('User'); 因为系统的模型类都能够自动加载,因此我们不需要在实例化之前手动进行类库导入操作。模型类CommonModel必须继承Model。我们可以在CommonModel类里面定义一些通用的逻辑方法,就可以省去为每个数据表定义具体的模型类,如果你的项目已经有超过100个数据表了,而大多数情况都是一些基本的CURD操作的话,只是个别模型有一些复杂的业务逻辑需要封装,那么第一种方式和第二种方式的结合是一个不错的选择。 3、传入表前缀、数据库和其他信息 M方法有三个参数,第一个参数是模型名称(可以包括基础模型类和数据库),第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息),例如: $User = M('db2.User','think_'); 表示实例化Model模型类,并操作db2数据库中的think_user表。 如果第二个参数留空或者不传,表示使用当前项目配置中的数据表前缀,如果操作的数据表没有表前缀,那么可以使用: $User = M('db1.User',null); 表示实例化Model模型类,并操作db1数据库中的user表。 如果你操作的数据库需要不同的用户账号,可以传入数据库的连接信息,例如: $User = M('User','think_','mysql://user_a:1234@localhost:3306/thinkphp'); 表示基础模型类用Model,然后对think_user表进行操作,用user_a账号进行数据库连接,操作数据库是thinkphp。 第三个连接信息参数可以使用DSN配置或者数组配置,甚至可以支持配置参数。 例如,在项目配置文件中配置了: 'DB_CONFIG'=>'mysql://user_a:1234@localhost:3306/thinkphp'; 则可以使用: $User = M('User','think_','DB_CONFIG'); 基础模型类和数据库可以一起使用,例如: $User = M('CommonModel:db2.User','think_'); 如果要实例化分层模型的话,利用公共模型类的方式,我们可以使用: M('UserLogic:User'); 来实例化UserLogic,虽然这样做的意义不大,因为可以用 D('User','Logic'); 实现同样的功能。 ThinkPHP函数详解:R方法 R方法用于调用某个控制器的操作方法,是A方法的进一步增强和补充。关于A方法的用法见这里。 R方法的调用格式: R('[项目://][分组/]模块/操作','参数','控制器层名称') 例如,我们定义了一个操作方法为: class UserAction extends Action { public function detail($id){ return M('User')->find($id); } } 那么就可以通过R方法在其他控制器里面调用这个操作方法(一般R方法用于跨模块调用) $data = R('User/detail',array('5')); 表示调用User控制器的detail方法(detail方法必须是public类型),返回值就是查询id为5的一个用户数据。如果你要调用的操作方法是没有任何参数的话,第二个参数则可以留空,直接使用: $data = R('User/detail'); 也可以支持跨分组和项目调用,例如: R('Admin/User/detail',array('5')); 表示调用Admin分组下面的User控制器的detail方法。 R('Admin://User/detail',array('5')); 表示调用Admin项目下面的User控制器的detail方法。 官方的建议是不要在同一层多太多调用,会引起逻辑的混乱,被公共调用的部分应该封装成单独的接口,可以借助3.1的新特性多层控制器,单独添加一个控制器层用于接口调用,例如,我们增加一个Api控制器层, class UserApi extends Action { public function detail($id){ return M('User')->find($id); } } 然后,使用R方法调用 $data = R('User/detail',array('5'),'Api'); 也就是说,R方法的第三个参数支持指定调用的控制器层。 同时,R方法调用操作方法的时候可以支持操作后缀设置C('ACTION_SUFFIX'),如果你设置了操作方法后缀,仍然不需要更改R方法的调用方式。 以上内容给大家分享了ThinkPHP函数详解之M方法和R方法,希望对大家有所帮助。

热心网友 时间:2022-04-06 04:49

thinkPHP中没有“tag()函数”。 函数(function),名称出自数学家李善兰的著作《代数学》。之所以如此翻译,他给出的原因是“凡此变数中函彼变数者,则此为彼之函数”,也即函数指一个量随着另一个量的变化而变化,或者说一个量中包含另一个量。

热心网友 时间:2022-04-06 06:23

自己去看手册
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 ThinkPHP从数据库获取到标题,遍历出来之后怎么控制它的字符长度! thinkphp 如何截取字符串 php thinkphp 关于模板截取前几个字符,后面的用...代替 thinkphp 根据name如何输出带分隔符号字段 Thinkphp模板如何进行中文字符串截取 为什么thinkphp转义后截取字符转为空 thinkphp用msubstr截取,为什么所以的字后面都有省略号 thinkPHP里面有分割字符串的函数吗 新版ThinkPHP(3.2.3)中的msubstr()函数怎么用啊 thinkphp3.2怎么使用ajax AJAX向THINKPHP发送数据 THINKPHP怎么老是收不到数据 怎么用Thinkphp+jquery实现ajax的提交,接收处理和返回 thinkphp的ajax怎么调试才方便有效率 thinkphp的ajax怎么实现局部刷新 如何加载thinkphp当中的ajax拓展 ThinkPHP框架中使用ajax能不能实时返回数据,一条一条的返回,例如:图 我用thinkphp做文章点击量,用ajax怎么实现,下面代码怎么调用在模板里 thinkphp ajax 无刷新 分页 返回值是整个页面 为什么 thinkPHP3.2.3如何利用ajax进行无刷新分页呢 thinkPHP中使用Ajax无刷新分页功能,出现怪事 thinkphp中save函数的意思和用法? ThinkPHP里查询一个表中某条数据开始的m条数据,然后取其中三个字段该怎么写? thinkphp中$this->_get()函数的用法 thinkphp 控制器中如何抓取另一个函数中的变量 ThinkPHP 把explode分割后的字符逐个写入另一张表,并+1 关于thinkphp中判断一个变量字符串是否包含另一个字符串变量 thinkphp中怎样替换字符串 laravel构造数据模型怎么写 Laravel5 怎么实现一个 Model 操作不同表名而相同结构的数据表 laravel框架中的Model操作数据库 相比DB类有什么明显的优越性吗 Laravel 4.1在进行数据库save()时,会自动多出两个字段updated_at和created_at,如何取消 数组对象常用的几个函数总结 php数组中相关的常用函数有哪些 php数组array中有多少最常用的函数 请高人们给列表一下 谢谢哦 该学习哪些PHP函数?PHP常用函数 php追加数组元素的函数有哪些 php数组函数,遍历数组的几种方法 php函数大全 php数组的PHP 5 Array 函数 php 有没安装bcmath.so模块?