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]/[分组文件夹/][模板主题文件夹/]和 ...
随机推荐
- WEB.xml配置文件解读
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- QAction系列详解
QAction系列详解 一.QAction类详解 [详细描述] QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中. 应用程序可以通过菜单,工具栏按 ...
- 八款强大的jQuery图片滑块动画插件
jQuery是一款相当轻巧的JavaScript框架,目前几乎每一个WEB项目都在使用jQuery,因为jQuery插件实在太丰富,尤其是 一些图片滑块插件和jQuery焦点图插件,更是多如牛毛,很多 ...
- python刷取CSDN博文访问量之四
python刷取CSDN博文访问量之四 作者:vpoet #coding:utf-8 import requests import urllib2 import re import time def ...
- Python高阶函数
在Python中,函数名也是一个变量,可以进行赋值 高阶函数是至少满足下列一个条件的函数: 接受一个或多个函数作为输入 输出一个函数 函数名也可以作为函数参数,还可以作为函数返回值 def f(n) ...
- UISearchBar 点击X 按钮收键盘
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;{ NSLog(@"textD ...
- SpringMVC的值传递
值的传递分为从页面传到到controller和从controller传递到页面,下面分别进行介绍: package com.springmvc.web; import java.util.Map; i ...
- 说说ShellExecuteEx
今天来说说ShellExecuteEx这个函数,先翻译MSDN,然后看个样例. ShellExecuteEx Function 对指定应用程序运行某个操作 语法: BOOL ShellExecuteE ...
- LR如何利用siteScope监控MySQL性能
本次实验,是在自己的电脑上使用APMServ5.2.6部署Discuz2.X论坛下,对该论坛的数据库MySQL5.1进行性能测试的,下面讲述LoadRunner在设计场景时,如何利用siteScope ...
- 分享一个BUG
这段时间在做改版的时候,遇上一个非常莫名其妙的bug,最终是被我的一个后端同事给发现和指正的.这个bug就是,一个js方法在ie7和ie8下面报 SCRIPT:1010 缺少标示符的错误.这个错误我百 ...