php总结回顾

做人不能一直埋着头往前跑,还要偶尔停下来看下来时的路。所以今天就来回顾下之前的吧

下面依次介绍

【一】TP加载流程

①应用入口文件index.php→②tp公共入口文件ThinkPHP.php→③核心Think类→④函数库→⑤配置文件→⑥控制器→⑦模型→⑧模板

步骤详解:

①应用入口文件index.php,最后require引用tp核心文件即ThinkPHP的公共入口文件(之所以用require,不用include的原因很明了)

require './ThinkPHP/ThinkPHP.php';  // 引入ThinkPHP入口文件

    作用:检测环境、管理应用级别的配置,如模式选择(开发/生成)、定义应用目录、工作目录、工作路径、附件上传跟目录等

②tp公共入口文件ThinkPHP,最后require引用加载tp核心Think类,并初始化应用

// 加载核心Think类
require CORE_PATH.'Think'.EXT;
// 应用初始化 
Think\Think::start();

   作用:定义版本信息、类文件后缀(.class.php)、URL模式、系统常量、

   关于系统常量,参考tp系统常量URL模式参考ThinkPHP的四种URL模式 URL_MODEL

③加载核心class类,因为在tp公共入口文件ThinkPHP里,最后的初始化应用前加载了核心Think类

 

   分类说下核心Think类:①Think.class.php是tp引导类;②Storage.class.php是分布式文件存储类;③File.class.php是本地文件写入存储类

 

【二】数据查询----------→辅助方法和连贯操作

系统支持的连贯操作方法有:

 

连贯操作作用支持的参数类型
where*用于查询或者更新条件的定义字符串、数组和对象
table用于定义要操作的数据表名称字符串和数组
alias用于给当前数据表定义别名字符串
data用于新增或者更新数据之前的数据对象赋值数组和对象
field用于定义要查询的字段(支持字段排除)字符串和数组
order用于对结果排序字符串和数组
limit用于限制查询结果数量字符串和数字
page用于查询分页(内部会转换成limit)字符串和数字
group用于对查询的group支持字符串
having用于对查询的having支持字符串
join*用于对查询的join支持字符串和数组
union*用于对查询的union支持字符串、数组和对象
distinct用于查询的distinct支持布尔值
lock用于数据库的锁机制布尔值
cache用于查询缓存支持多个参数
relation用于关联查询(需要关联模型支持)字符串
result用于返回数据转换字符串
validate用于数据自动验证数组
auto用于数据自动完成数组
filter用于数据过滤字符串
scope*用于命名范围字符串、数组
bind*用于数据绑定操作数组或多个参数
token用于令牌验证布尔值
comment用于SQL注释字符串
index用于数据集的强制索引(3.2.3新增)字符串
strict用于数据入库的严格检测(3.2.3新增)布尔值

 

【三】联表查询

 (1)table方法:通过where关联数据表,在TP中对应SQL原型

 原生PHP方法:通过where语法进行表1和表2的关联操作,即让两个表关联

select  表1.字段,表2.字段 [as 关联查询出的字段名] from  表1[as 别名1],表2[as 别名2]  where  表1.字段=表2.字段//注意:一般查询主表1的所有---表1.*,表2.字段

 这里举个例子,关联职员表主表sp_user和部门表从表sp_dept,关联出的字段设置为newPid

$model = M('user');
            $sql = 'select user.*,dept.pid as newPid from sp_user as user ,sp_dept as dept where user.dept_id=dept.pid';
            $result = $model->query($sql);
            dump($result);die;

转换成table方法

public function study(){
            $model = M('user');//直接实例化父类即可,不需要关联数据表!!!
            // $sql = 'select user.*,dept.pid as newPid from sp_user as user ,sp_dept as dept where user.dept_id=dept.pid';
            $result = $model->field('user.*,dept.pid as newPid')
->table('sp_user as user ,sp_dept as dept')
->where('user.dept_id=dept.pid')
->select(); dump($result);die; $this->display(); }

结果:

 

(2)join方法:通过on关联数据表

①原生SQL方法:

select t1.*,t2.name as deptname from sp_dept as t1 left join sp_dept as t2 on t1.pid=t2.id;

②ThinkPHP中执行join语法:

       通过on进行关联,join方法也是连贯操作的辅助方法之一,且只有一个参数

如果需要给当前模型关联的表起别名,可以使用alias方法:

$model->alias('别名');//辅助方法之一
$model = M('user');//直接实例化父类即可,不需要关联数据表!!!
            // $sql = 'select user.*,dept.pid as newid from sp_user as user left join sp_dept as dept on user.dept_id=dept.pid';
            $result = $model->field('user.*,dept.pid as newid')
->alias('user')
->join('left join sp_dept as dept on user.dept_id=dept.pid')
->select(); dump($result);die;

对比:

table语句:select user.*,dept.pid as newPid from sp_user as user ,sp_dept as dept where user.dept_id=dept.pid
join语句: select user.*,dept.pid as newid from sp_user as user left join sp_dept as dept on user.dept_id=dept.pid;

 

【四】$_POST和I方法对比

(1)I方法的所有获取变量都会进行htmlspecialchars过滤,也可以自己设置过滤函数。比$_POST方便2)I方法的所有获取变量都会进行htmlspecialchars过滤,也可以自己设置过滤函数。比$_POST方便3)I方法对特殊字符做了转义

 

 

 

 

 

 

 

 

 

 

 

 .

.

转载于:https://www.cnblogs.com/jianxian/p/8721664.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值