• 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:phpStudyWWWprojectframework hinkphp pldispatch_jump.tpl',
    跳转错误页面: 'dispatch_error_tmpl' => 'D:phpStudyWWWprojectframework hinkphp pldispatch_jump.tpl',
    跳转异常页面: 'exception_tmpl' => 'D:phpStudyWWWprojectframework hinkphp pl hink_exception.tpl',

    错误信息: 'error_message' => '系统发生错误,请重试 ~~~ ',
    显示错误信息: 'show_error_msg' => true,
    异常处理句柄: 'exception_handle' => 'appcommonexceptionHttp', 异常页面: 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

  • 相关阅读:
    NO29 用户提权sudo配置文件详解实践--志行为审计
    NO28 第四关考试题
    NO27 定时任务
    NO26 Linux的文件权限--chmod--Linux删除文件说明--suid--sgid
    NO25 三剑客之SED行天下
    NO24 第三关--企业面试题
    gcc编译错误表
    C++的精髓——虚函数
    gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
    正确使用#include和前置声明(forward declaration)
  • 原文地址:https://www.cnblogs.com/zqsb/p/10718296.html
Copyright © 2020-2023  润新知