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. HDU 1556 Color the ball - from lanshui_Yang

    Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a ...

  2. PHP获取客户端操作系统,浏览器,语言,IP,IP归属地等

    <?php class Client { ////获得访客浏览器类型 function Get_Browser(){ if(!empty($_SERVER['HTTP_USER_AGENT']) ...

  3. [C++程序设计]用函数指针变量调用函数

    指针变量也可以指向一个函数.一个函数在编译时被分配给一个入口地址.这个函数入口地址就称为函数的指针.可以用一个指针变量指向函数,然后通过该指针变量调用此函数 #include <iostream ...

  4. Sunscreen(POJ 3614 优先队列)

    Sunscreen Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5898   Accepted: 2068 Descrip ...

  5. Catch That Cow(BFS)

    Catch That Cow Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. 前端上将字符串用语音读出来只能在IE上运行 其他不行 代码极少

    先保存保存自己的笔记 有高手看到求指点 <script type="text/javascript"> var VoiceObj; try { VoiceObj = n ...

  7. information_schema.key_column_usage 学习

    information_schema.key_column_usage 表可以查看索引列上的约束: 1.information_schema.key_column_usage 的常用列: 1.cons ...

  8. SPI 四种模式

    SPI时钟极性CPOL, = 0表示在没有数据传输时为低电平,= 1表示没有数据传输时为高电平. SPI时钟相位CPHA,= 0表示时钟的第一个沿更新数据.第二个沿锁存数据,= 1表示时钟的第一个沿锁 ...

  9. Qt之窗口动画(下坠、抖动、透明度)(还有好多相关帖子)

    简述 前面几节中我们介绍了关于动画的基本使用,有属性动画.串行动画组.并行动画组.这节我们来实现一些特效,让交互更顺畅. 简述 示例 效果 源码 更多参考 示例 下面,我们以geometry.pos. ...

  10. Theme.AppCompat.Light报错

    style文件中的Theme.AppCompat.Light报错,Error retrieving parent for item: No resource found that matches th ...