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

posted @ 2019-04-16 17:03  ncsb  阅读(502)  评论(0编辑  收藏  举报