ThinkPHP3.2学习笔记4——实用项

这篇博客介绍了ThinkPHP3.2框架的代码调试技巧,包括跟踪信息、两种运行模式、SQL调试和性能调试。此外,还详细讲解了会话控制,如session和cookie的使用,以及文件加载的不同方式,如函数库形式、配置项动态加载和load方法。这些内容对于理解和提升ThinkPHP3.2项目开发效率十分有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码调试

跟踪信息

跟踪信息:就是查询/展示系统的执行相关状况。

在thinkPHP中跟踪信息默认是关闭的,如果需要使用,则需要开启,可以通过SHOW_PAGE_TRACE开启。
上述的配置项在主配置文件中是不存在的,需要使用的话可以自己在配置文件中定义。
Application/Comm/Cof/config.php

两种模式

在thinkPHP系统为了方便开发,提供了一下两种模式:开发/调试模式、生产模式。
调试模式:是指在开发调试阶段所使用的模式,错误信息比较详细;
生产模式(默认):是指项目上线的时候所使用的模式,错误信息比较模糊;

配置项:APP_DEBUG,定义的位置在入口文件中。

sql调试

_sql()

获取模型中最后一条sql语句:$model->getLastSql();
在thinkPHP3.2之后,系统增加了一个别名方法:$model->_sql()
例子:

	//sql调试
	public function test22(){
		$model=M('Student');
		$data=$model->select();
		//echo $model->getLastSql();//获取SQL语句
		echo $model->_sql();
	}

fetchSql

语法格式:$model->where()->limit()…->oerder()->fetchSql(true)->CURD操作;

  • fetchSql方法使用时,可以完全看作是辅助方法,所以要求必须在model之后,CURD操作之前,顺序无所谓。
  • fetchSql方法只能在Thinkphp3.2.3版本之后使用。

性能调试

在thinkPHP中系统提供了一个性能测试的快速方法,这个快速方法家叫做G。
语法格式:

G('开始标记');
需要统计效率的代码段
...
G('结束标记');
G('开始标记','结束标记',数字/字符m);
  • 针对G方法的第三个参数:如果参数的是数字,则表示统计代码的执行时间,数字表示精确的小数位数,单位是秒;如果是字符m,则表示统计内存开销,单位是byt(需要服务器的支持)。

会话控制

会话支持一般都是指的是cookie和session。

session的支持

session方法:定义在系统函数库文件中functions.php

  • session(‘name’,‘value’)------创建一个名为name的session值,值是value
  • $value=session(‘name’)-----读取session中的name元素值,值赋给value
  • session(‘name’,null)----------删除名为name元素的值
  • session(null)-------------------删除全部session元素
  • session()-----------------------读取全部session信息
  • session(’?name’)-------------判断名为name的session是否存在,如果存在则返回true;如果不存在,则返回false

例子:

public function test40(){
	//1、设置
	session('name','韩梅梅');
	session('name2','李雷');
	dump($_SESSION);
	//2、读取单个
	value=session('name');
	dump($value);
	//3、清空单个
	session('name',null);
	dump($_Session);
	//4、全部删除
	session('name3','马冬梅');
	//session(null);
	//dump($_SESSION);
	//5、读取全部
	dump(session());
	//6、判断某个session是否存在
	dump(session('?name3'));
}

cookie的支持

  • cookie(‘name’,‘value’)----------设置一个名为name的cookie值,值是value
  • cookie(‘name’,‘value’,3600)—设置一个名为name的cookie值,值是value,有效期是3600s
  • $value=cookie(‘name’)---------读取名为name的cookie赋值为value
  • cookie(‘name’,null)--------------删除名额外name的cookie值
  • cookie(null)-----------------------删除全部的cookie(有问题)
  • cookie()---------------------------获取全部的cookie

例子:

public function test41(){
	//1、设置没有有效期的cookie
	cookie('name','张三');
	//2、设置有效期为3600s的cookie
	cookie('name2','李四',3600);
	//3、获取单个cookie值
	dump(cookie('name2'));
	//4、清空单个
	cookie('name2',null);
	//5、清空全部
	//cookie(null);
	//6、获取全部
	dump(cookie());
}

文件加载

1.函数库形式加载

函数库在ThinkPHP中有三大类:系统函数库文件(functions.php)、应用级别函数库文件(function.php)、分组级别函数库文件(function.php)。

  • 上述三大类的文件只有系统函数库文件默认是存在的,其他两类默认不存在,需要自行创建;

例子:
1.使用函数库文件形式定义需要的函数,函数名gbk2utf8
Application/Common/Common/function.php

<?php
function gbk2utf8(){
	echo 'gbk2utf8';
}

2.测试

//
public function test42(){
	//使用函数
	gbk2utf8();
}

说明:

  1. 不需要引入funciton.php,系统在执行的时候自动棒我们引入了文件function.php文件;
  2. 如果函数定义在应用几倍的函数库文件中,则能在全部的分组(整个应用)使用;如果函数定义在某个分组的函数库文件中,则只能在当前的分组中的使用,否则会报函数未定义。

2.通过配置项动态加载

在系统的执行流程中有一个文件会被执行到----App.class.php
在该类中初始化方法执行了load_ext_file函数:LOAD_EXT_FILE=>‘abc,def,ghi…’;

扩展:C方法(快速方法之一—作用是操作ThinkPHP中的配置项)

  • C(name,value);------设置配置项name的值,值是value
  • C(name);--------------读取配置项name的值
  • C();---------------------读取全部的配置项

例子:
1.在应用级别的配置文件中定义配置项LOAD_EXT_FILE,引入文件info.php

'LOAD_EXT_FILE'  =>  'info',

2.在应用函数库文件目录中定义一个info.php
Application/Common/Common/info.php

<?php
function getInfo(){
	//输出phpinfo的信息
	phpinfo();
}

3.测试

//
public function test43(){
	//使用函数
	getInfo();
}

3.通过load方法加载

语法格式:load(’@/不带后缀的PHP文件名’);

  • 文件必须存在于分组级别的函数库目录中,并且只能用于定义的分组中。

例子:在分组目录中创建文件hello.php,然后在其中定义一个函数,然后再去使用load方法加载并且使用其中的函数。
1.Appliction/Admin/Common/hello.php

<?php
function sayhello($who){
	//使用函数
	echo 'hello'.$who;
}

2.测试—在控制器中使用load方法加载hello文件

//load
public function test44(){
	//load
	load('@/hello');
	//调用函数
	sayhello('world');
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值