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框架二的更多相关文章

  1. 制作类似ThinkPHP框架中的PATHINFO模式功能(二)

    距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ...

  2. ThinkPHP框架整合phpqrcode生成二维码DEMO

    ThinkPHP框架发展到今天功能已经变得是非常强大了,但是ThinkPHP框架中没有二维码相关的库,因此我们可以通过整合phpqrcode来完成生成二维码的功能.想使用phpqrcode首先就要把p ...

  3. ThinkPHP框架学习(二)

    在上一节中,我主要讲到了如何获取ThinkPHP框架,以及虚拟目录和虚拟主机的配置.准备工作完成之后,就可以利用ThinkPHP去部署项目了. 先在工作目录(D:/zend/workspace)下新建 ...

  4. 攻城记:Thinkphp框架的项目规划总结和踩坑经验

    一.项目模块规划 1.项目分为PC端.移动端.和PC管理端,分为对应目录为 /Application/Home,/Application/Mobile,/Application/Admin: 对应入口 ...

  5. 关于在BAE上部署ThinkPHP框架的问题

    现在有点小兴奋,因为在在BAE上部署ThinkPHP框架的问题快折腾一天了,午觉都没睡,不过没白整总算有点结果.不扯淡了,直入正题吧. 之前熟悉ThinkPHP框架,想在BAE上用ThinkPHP做点 ...

  6. 使用Thinkphp框架开发移动端接口

     本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...

  7. 浅析Thinkphp框架中运用phprpc扩展模式

    浅析Thinkphp框架中应用phprpc扩展模式 这次的项目舍弃了原来使用Axis2做web服务端的 方案,改用phprpc实现,其一是服务端的thinkphp已集成有该模式接口,其二是phprpc ...

  8. Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

    原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问 ...

  9. ThinkPHP框架视图详细介绍 View 视图--模板(九)

    原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...

随机推荐

  1. java poi 合并单元格后边框问题

    在项目中用poi合并单元格,但发现边框会有不显示的问题. 在网上搜集了答案,来记录一下. 解决方法: 将每个没用到的单元格都设空值. 例如: HSSFCell cell = row.createCel ...

  2. 容器的深入研究(二)—Set与Map

    一.Set类的作用 二.Set类延生的四种形式 三.非基础类型如何使用Set的四种形式 四.Queue的使用 五.PriorityQueue的使用 六.Map的六种形式 七.HashMap散列码的实现 ...

  3. python运维开发(十六)----Dom&&jQuery

    内容目录: Dom 查找 操作 事件 jQuery 查找 筛选 操作 事件 扩展 Dom 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它 ...

  4. python:利用urllib查找计算机二级准考证号

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaYAAAEACAIAAAB3VkWnAAAgAElEQVR4nOydZ3gUR9bv+WhExhHnDH

  5. 利用7z实现一键解压

    目的: 实现双击zip,7z,rar等文件时自动解压,解压完毕后自动打开文件夹. 工具: [本文末尾附有所有工具的下载地址] 7z.exe types 步骤: 新建"7z-自动解压" ...

  6. ASP.NET MVC 4.0 学习3-Model

    Model負責獲取數據庫中的資料,並對數據庫中的數據進行處理. MVC中有關 數據庫 的任務都由Model來完成,Model中對數據資料進行定義,Controller和View中都會參考到Model, ...

  7. DOSUSB 2.0 免费版的限制原理

    两年前,我在写USB的文章时,多次提到了DOSUSB这个东东,这两年也没有关注这方面的变化,最近,有机会重新进入DOSUSB的官方网站(www.dosusb.net),欣喜地发现,这个网站不仅依然存在 ...

  8. UESTC_秋实大哥打游戏 2015 UESTC Training for Data Structures<Problem H>

    H - 秋实大哥打游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

  9. python使用get在百度搜索并保存第一页搜索结果

    python使用get在百度搜索并保存第一页搜索结果 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用在意我的感受 #coding:utf-8 import ur ...

  10. ZOJ3516 (图的遍历)

    Tree of Three Time Limit: 2 Seconds      Memory Limit: 65536 KB Now we have a tree and some queries ...