ThinkPHP框架使用笔记

摘要:
TP提供env只能通过两个参数自动生效,这两个参数优先于应用程序配置文件。官方描述是:环境变量中的应用程序集_调试和应用程序_跟踪参数将自动生效。其他参数只能通过Env::get方法读取。正因为如此,我认为TPxx非常好http://www.thinkphp.cn/topic/50810.htmlTP6环境变量已得到支持,并且配置清晰。TP5的配置太乱了。配置数据的格式。注意:问题:配置数据库的密码附加了#和其他特殊字符,导致TP框架解析错误。目前,中的数据格式。测试了TP的env环境配置文件:不要带它!

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之前配置太乱了
ThinkPHP框架使用笔记第1张

ThinkPHP框架使用笔记第2张

配置数据格式注意:

问题: 配置数据库的密码带了 !#等特殊字符,导致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
    ThinkPHP框架使用笔记第3张

  • TP5
    ThinkPHP框架使用笔记第4张

免责声明:文章转载自《ThinkPHP框架使用笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇dhtmlxscheduler使用六、Django的orm之单表操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python操作Access数据库基本操作步骤分析

Python编程语言的出现,带给开发人员非常大的好处。我们可以利用这样一款功能强大的面向对象开源语言来轻松的实现许多特定功能需求。比如Python操作Access数据库的功能实现等等。在Python操作Access数据库之前,首先,你应安装了Python和Python for Windows extensions(pywin32-216.win32-py2...

python(八):python使用lmdb数据库

一、入门代码 LMDB的全称是Lightning Memory-Mapped Database(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据文件和一个锁文件: LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。 让系统访问大量小文...

PL/pgSQL学习笔记之二

39.1.1 使用 PL/pgSQL的好处 SQL是 PostgreSQL和其他大多数关系型数据库作为查询语言而使用的语言。它可移植,并容易学习。但是SQL语句必须被数据库服务器逐条地执行。 这意味着你的客户应用必须向数据库发送每一条查询,等待它被处理,接收并处理结果,进行一些计算,然后再依次类推送出更多的查询。所有这些导致进程间通信,如果你的客户程序和...

将excel的.xlsx文件转成数据库文件.db的方法

1.下载好工具SQLite Expert Professional 3 ,晚上有很多,自行百度。 2.打开.xls文件,将文件另存为.csv文件。说明一下: 可以将xls文件看作是数据库里的一个表。所以,表名和.xls文件名称一直,里面的字段,就是.xls文件中的字段。 3.打开SQLite Expert Professional 3,新建一个数据库,数据...

SpringCloud是什么?

参考链接: http://blog.csdn.net/forezp/article/details/70148833 一、概念定义 Spring Cloud是一个微服务框架,相比Dubbo等RPC框架,Spring Cloud提供的全套的分布式系统解决方案。 Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端...

一沙框架(yishaadmin) 前端引入VUE的实现方法

一沙框架(yishaadmin) 前端引入VUE的实现方法 1、下载vue.js,加入项目中,如下图 2、页面代码如下,注意注释的内容,数据请求的实现方法 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device...