ThinkPHP框架使用笔记
SQL日志问题
THINK_VERSION : 5.0.13
SQL访问日志,默认在debug模式下才会打印出来。
测试发现:
浏览器访问、数据库调试模式 debug为false日志不会打印SQL日志,为true会打印日志
命令行访问、数据库调试模式debug对打印SQL日志没有影响都会打印出来。可以设置全局debug模式为false,则不会打印sql日志
最让我不能理解的是,全局debug=true,命令行运行: php think lottery_period aaa (lottery_period 具体的控制器,aaa是随便乱写的参数值 这样也不会打印出日志)
命令行
php think lottery_period dev 开发模式运行命令
php think lottery_period prod 生产环境运行命令
命令行清空日志: php think clear (前提是clear没有被自定义、则会运行系统的clear清理日志信息)
自动格式化时间戳问题
THINK_VERSION : 5.0.13
A non well formed numeric value encountered
对数据库取出的时间字段自动格式化处理,而数据库存库的不是时间戳,而是datetime类型,TP框架在视图渲染的时候自动格式化导致报错
处理这个问题只需配置文件: datetime_format = false (之前默认的值为空字符,所以导致报错)
怎么关闭页面右下角调试页面
-
关闭debug模式
-
设置配置 'SHOW_PAGE_TRACE' =>'false',
测试发现设置这个参数没有什么用在TP5.0版本,需要设置 app_trace = false
TP5.0模板
- 每次在有单选框的时候选中指定的
<select name="merchant_id" >
<option value="">请选择</option>
{volist name="merchant_list" id="vo"}
<option value="{$vo.merchant_id}" {$vo.merchant_id == $query.merchant_id ? 'selected' : ''}>{$vo.merchant_name}</option>
{/volist}
</select>
使用三元运算符比较设置selected属性
模型
-
获取最后执行的SQL
$model->getLastSql() 这个只能执行的最近一条SQL -
获取SQL不执行
$model->fetchSql()->select()
$this->fetchSql()->column('uid,distance')
TP5.0的环境变量.env 完全不实用的功能
一个框架连环境差异化的配置都没有,唉。
比如数据库配置信息、redis配置信息 在开发环境,测试环境,生产环境肯定是不一样的了,这都不能提供差异化的配置。
TP所提供的.env 只能两个参数自动生效,优先于应用的配置文件,官方描述为: 环境变量中设置的app_debug和app_trace参数会自动生效(优先于应用的配置文件),其它参数则必须通过Env::get方法才能读取。
就冲这一点 就觉得TP xx的很了
http://www.thinkphp.cn/topic/50810.html
TP6 已经支持了环境变量 ,配置清晰明了,TP5之前配置太乱了
配置数据格式注意:
问题: 配置数据库的密码带了 !#等特殊字符,导致TP框架解析错误。
目前测试出TP的 .env 环境配置文件中的数据格式化: 不要带!#等特殊字符
TP的配置参数太多了
很多参数不看文档我也不知道什么意思。特别多的个性化自动以的参数。我觉得还是约定胜于配置的理念好些
配置文件:
跳转成功页面: 'dispatch_success_tmpl' => 'D:\phpStudy\WWW\project\framework\thinkphp\tpl\dispatch_jump.tpl',
跳转错误页面: 'dispatch_error_tmpl' => 'D:\phpStudy\WWW\project\framework\thinkphp\tpl\dispatch_jump.tpl',
跳转异常页面: 'exception_tmpl' => 'D:\phpStudy\WWW\project\framework\thinkphp\tpl\think_exception.tpl',
错误信息: 'error_message' => '系统发生错误,请重试 ~~~ ',
显示错误信息: 'show_error_msg' => true,
异常处理句柄: 'exception_handle' => '\app\common\exception\Http', 异常页面: http_exception_template
记录追踪 : 'record_trace' => false,
应用调试模式: 'app_debug' => false,
应用追踪: 'app_trace' => false,
应用状态: 'app_status' => 'env_dev',
什么环境(dev 开发,test 测试,prod生产)
一旦关闭调试模式,发生错误后不会提示具体的错误信息,如果你仍然希望看到具体的错误信息,那么可以如下设置:
// 显示错误信息
'show_error_msg' => true,
这个参数对应开启了debug是没有用的,
如果关闭debug模式: 'show_error_msg' => true 开启会显示具体的错误信息,关闭只显示error_message配置的错误信息比如:系统发生错误,请重试 ~~~
debug模式关闭失效的参数:
app_trace
show_error_msg
本着严谨的原则,5.0版本默认情况下会对任何错误(包括警告错误)抛出异常,如果不希望如此严谨的抛出异常,可以在应用公共函数文件中或者配置文件中使用error_reporting方法设置错误报错级别(请注意,在入口文件中设置是无效的),例如:
// 异常错误报错级别,
error_reporting(E_ERROR | E_PARSE );
TP低调一些了啊
-
TP6
-
TP5