ThinkPHP框架二
ThinkPHP笔记二
1.1 TP框架的配置文件
在TP框架中,所有的配置文件都是自动加载的,加载的顺序:惯例配置《应用配置《调试配置《模块配置《动态配置
1、 惯例配置(ThinkPHP\Conf\convention.php),这个配置对所有的项目都适用
2、 应用配置(Application\Common\Conf\Config.php),这个配置对整个应用程序起作用
3、 调试配置(Application\Comment\Conf\debug.php),这个配置文件要自己添加。默认情况下是不存在的
4、 模块配置(Application\模块\Conf\Conf.php),对当前模块起作用
5、 动态配置 C(‘配置名’,’配置值’)
补充:C()函数在TP框架中用来获取配置文件的值。
1.2 空操作
TP在找不到请求的操作方法的时候,会定位到_empty()方法来执行,利用这个机制,可以实现用户请求的操作不存在的时候统一定位到某个地方处理。
形式:
public function _empty()
{
echo “当前操作不合法”;
}
1.3 空控制器
当系统找不到控制器的时候,会定位到空控制器((EmptyController)上。空控制器的使用主要用于对错误页面的提示。
1.4 跨控制器调用
1.4.1 直接实例化
例如:$info = new \Admin\Login\login
1.4.2 A()函数
A()函数用来实例化对象
1.4.3 R()函数
R()和A()使用方法基本一致,唯一不同的地方,R()在实例化 的时候把操作方法一起传递过去,这样就省略了调用操作方法 的步骤。
1.5 切换Smarty引擎
在配置文件中添加配置
return array(
‘TMPL_ENGINE_TYPE’=>Smarty
);
1.6 命名空间
在开发一个很大的项目的时候,会有很多代码,如何组织这些代码就成了很大的问题,PHP通过命名空间来解决这个问题,命名空间是一个名字,用来将代码进行逻辑分组,
命名空间是PHP5.3版本以后才支持的,命名空间可以包含类,函数和const常量
1.7 命名空间的声明和使用
1.7.1通过namespace关键字来声明命名空间。
注意的地方:第一个namespace前面不能出现任何代码,第一个namespace必须放在最前面
命名只能包含const常量,不能包含define()常量。也就说define()常量不受命名空间的约束。
1.7.2 多级命名空间
书写示例: namespace Chine\Shandong\Jinan
1.8 空间元素的三种访问方法
1、 非限定名称访问
2、 完全限定名称访问
3、 部分限定名称访问
1.9引入命名空间
完全限定名称访问不方便书写,维护,我们可以在当前的命名空间中引入指定的命名空间,然后通过部分限定名称访问来访问空间元素。
引入命名空间的关键字是use。
2.0 引入类
如果命名空间中有类,可以直接引入类,注意:常量和函数不能直接引入。
2.1 给类取别名
引入的类和当前命名空间中类名一样,在实例化的时候无法区分到底实例化那个类,解决方法:给引入的类取别名,用as关键字。
2.2 公共空间
如果PHP文件中没有namespace关键字声明,则该文件元素都存在于“公共命名空间”。
访问公共命名空间格式:”\元素”
2.3 命名空间的注意事项
1.针对类、函数、const常量有效,对define常量无效
2.第一个namespace前面不能有任何的代码包括header
3.引入带命名空间的文件,对当前文件的命名空间不产生影响
4.命名空间都是虚拟的抽象空间,不是真是存在的目录,但是在 TP框架中,命名空间和路径是一致的,TP将命名空间转换成 路径来引入类。
2.4 连接数据库
TP框架中内置了数据库访问层,把不同的数据库操作都封装起来,我们无需针对不同的数据库写不同的代码,我们只需对公共的DB类进行操作,DB类会自动调用对应数据库的驱动来处理。
打开convention.php文件,将数据库配置文件拷贝到cofig.php中,更改配置
2.5创建Model模型类
2.5.1模型类的创建规则
1、 模型名和表名一致,表名+Model
2、 文件名和类名一致,以.class.php结束。
3、 每一个模型都要继承基础模型类。
2.5.2 重写表名
如果数据库中表名比较特殊,需要在模型层中重写表名
情形一:重写表名,包含表前缀
Protected $trueTableName
情形二:重写表名,不包含表前缀
Protected $TableName
2.5.3 三种实例化模型的方法
1.直接实例化
2.M()方法,相当于是new Model();M()通过传递表名可以操作相 应的表,但是对象的数据类型是Model型;
3.D()方法,如果Model不再模块文件下,实例化的是基础模型 类(Model),和M()一样
如果Model在模块下,实例化的是子类,和直接实例化子类一 样。
2.5.4 对表进行操作
1、 增 $model->add(关联数组)
2、 改 $model->save(关联数组)
3、 删 $model->del($id)
4、 查 $model->select() 返回的二维数组
5、 查 $model->find() 返回一条记录
2.5.5 条件查询
1.按主键查询 $list=model->select(查询条件,[查询条件2...]);
2.Where条件 $list = where()->$model->select();
3.Limit限制
例1:$list=$model->limit(2)->select(); //取前两条记录,从 0条开 始
例2:$list=$model->limit(2,5)->select(); //从第2条开始, 取5 条记录
4.排序
$list =$model->order(‘数据 asc’)->select(); 按升序查询, 默认,asc可以省略
$list=$model->order(‘数据 desc’)->select(); 按照数据的降序查 询
5.指定查询字段
$list=$model->field(‘数据字段名字,[可选字段]’)-select();
6.分组查询
$list=$model->group(‘分组条件’)->select();
7.having
having和where的区别:
Where条件查询的字段必须数据表中存在,having条件字段必 须在结果集中存在。
8.直接执行SQL语句
通过基础模型类的对象直接执行SQL语句。
$list = M()->query(‘select * from 表名’);
9.链式操作之间没有先后顺序只要将select放在最后就行。
2.5.6动态查询:语法:getBy+字段名
备注:动态查询是已经在TP框架中封装好的方法,一次只能查询一次记录
2.5.7聚合函数:
$model->count() //查询总记录数
$model->max() //查询记录最大值
$model->min () //查询记录最小值
$model->sum() //查询记录的总和
$model->avg() //查询记录的平均值
ThinkPHP框架二的更多相关文章
- 制作类似ThinkPHP框架中的PATHINFO模式功能(二)
距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ...
- ThinkPHP框架整合phpqrcode生成二维码DEMO
ThinkPHP框架发展到今天功能已经变得是非常强大了,但是ThinkPHP框架中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能.想使用phpqrcode首先就要把p ...
- ThinkPHP框架学习(二)
在上一节中,我主要讲到了如何获取ThinkPHP框架,以及虚拟目录和虚拟主机的配置.准备工作完成之后,就可以利用ThinkPHP去部署项目了. 先在工作目录(D:/zend/workspace)下新建 ...
- 攻城记:Thinkphp框架的项目规划总结和踩坑经验
一.项目模块规划 1.项目分为PC端.移动端.和PC管理端,分为对应目录为 /Application/Home,/Application/Mobile,/Application/Admin: 对应入口 ...
- 关于在BAE上部署ThinkPHP框架的问题
现在有点小兴奋,因为在在BAE上部署ThinkPHP框架的问题快折腾一天了,午觉都没睡,不过没白整总算有点结果.不扯淡了,直入正题吧. 之前熟悉ThinkPHP框架,想在BAE上用ThinkPHP做点 ...
- 使用Thinkphp框架开发移动端接口
本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...
- 浅析Thinkphp框架中运用phprpc扩展模式
浅析Thinkphp框架中应用phprpc扩展模式 这次的项目舍弃了原来使用Axis2做web服务端的 方案,改用phprpc实现,其一是服务端的thinkphp已集成有该模式接口,其二是phprpc ...
- Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)
原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问 ...
- ThinkPHP框架视图详细介绍 View 视图--模板(九)
原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...
随机推荐
- java poi 合并单元格后边框问题
在项目中用poi合并单元格,但发现边框会有不显示的问题. 在网上搜集了答案,来记录一下. 解决方法: 将每个没用到的单元格都设空值. 例如: HSSFCell cell = row.createCel ...
- 容器的深入研究(二)—Set与Map
一.Set类的作用 二.Set类延生的四种形式 三.非基础类型如何使用Set的四种形式 四.Queue的使用 五.PriorityQueue的使用 六.Map的六种形式 七.HashMap散列码的实现 ...
- python运维开发(十六)----Dom&&jQuery
内容目录: Dom 查找 操作 事件 jQuery 查找 筛选 操作 事件 扩展 Dom 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它 ...
- python:利用urllib查找计算机二级准考证号
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaYAAAEACAIAAAB3VkWnAAAgAElEQVR4nOydZ3gUR9bv+WhExhHnDH
- 利用7z实现一键解压
目的: 实现双击zip,7z,rar等文件时自动解压,解压完毕后自动打开文件夹. 工具: [本文末尾附有所有工具的下载地址] 7z.exe types 步骤: 新建"7z-自动解压" ...
- ASP.NET MVC 4.0 学习3-Model
Model負責獲取數據庫中的資料,並對數據庫中的數據進行處理. MVC中有關 數據庫 的任務都由Model來完成,Model中對數據資料進行定義,Controller和View中都會參考到Model, ...
- DOSUSB 2.0 免费版的限制原理
两年前,我在写USB的文章时,多次提到了DOSUSB这个东东,这两年也没有关注这方面的变化,最近,有机会重新进入DOSUSB的官方网站(www.dosusb.net),欣喜地发现,这个网站不仅依然存在 ...
- UESTC_秋实大哥打游戏 2015 UESTC Training for Data Structures<Problem H>
H - 秋实大哥打游戏 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Subm ...
- python使用get在百度搜索并保存第一页搜索结果
python使用get在百度搜索并保存第一页搜索结果 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用在意我的感受 #coding:utf-8 import ur ...
- ZOJ3516 (图的遍历)
Tree of Three Time Limit: 2 Seconds Memory Limit: 65536 KB Now we have a tree and some queries ...