m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置

一、总结

一句话总结:

配置文件 开发人员 重置
数据库 非开发人员 重启

配置文件做配置的特点:方便开发人员修改配置,服务器重启的话配置重置。

数据库做配置的特点:方便非开发人员修改配置,服务器重启的话配置不会受到影响。

1、填写表单(比如增加修改)后的history.go(-1)会跳到跳转页面,使后台的代码再执行一遍,这样会给用户及其不好的用户体验,如何解决?

分治

统一解决是不行的,history的后退机制就是这样,比如删除某一项功能,后台的delete函数和跳转页面组成的页面是客观存在的html页面,也客观存在于history对象的url中,因为我们无法查看history对象的url(出于安全),而且修改引擎(或者说框架)也不可行,那就只有每个页面单独指定,因为页面不多,倒是也负担不大,也就多了小几行代码。

因为页面有限,所以可以分而治之。

后退逻辑其实和面包屑逻辑是一样的

2、thinkphp文件的多图上传之后,修改操作的陷阱?

特判

单图上传修改时候传回来的内容,称为“内容1“”

1 ["a_content_pic2"] => array(5) {
2     ["name"] => string(0) ""
3     ["type"] => string(0) ""
4     ["tmp_name"] => string(0) ""
5     ["error"] => int(4)
6     ["size"] => int(0)
7   }

多图上传修改时候传回来的内容,称为“内容2”

["a_content_pic3"] => array(5) {["name"] => array(1) {[0] => string(0) ""}["type"] => array(1) {[0] => string(0) ""}["tmp_name"] => array(1) {[0] => string(0) ""}["error"] => array(1) {[0] => int(4)}["size"] => array(1) {[0] => int(0)}}

我的问题是因为我的内容2做了特判,所以导致修改的时候修改别的会让内容2的内容没有

 1 foreach ($_FILES as $key=>$val){
 2     if($_FILES[$key]['tmp_name']){
 3         // 获取表单上传文件 例如上传了001.jpg
 4         $file = request()->file($key);
 5         if($key=='a_content_pic3'){//多图上传的情况
 6             //不用拆,官方文档有怎么用
 7             //修改的時候a_content_pic3有更新
 8             if($_FILES[$key]['size'][0]!=0){
 9                 $files=$file;
10                 $data[$key]=null;
11                 foreach($files as $perFile){
12                     // 移动到框架应用根目录/public/uploads/ 目录下
13                     $info = $perFile->move(ROOT_PATH . 'public' . DS . 'static/uploads/student/note'."/{$jieduanStr}");
14                     $data[$key].='/static/uploads/student/note/'."{$jieduanStr}/".$info->getSaveName().',,';
15                 }
16             }
17
18         }else{
19             // 移动到框架应用根目录/public/uploads/ 目录下
20             $info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads/student/note'."/{$jieduanStr}");
21             // 已经上传成功,我们要把文件的路径写进数据库
22             $data[$key]='/static/uploads/student/note/'."{$jieduanStr}/".$info->getSaveName();
23         }
24     }
25 }

加第8行代码就做判断那就好了,那么第10行代码就不会在没有更新的情况下起作用了

3、title和select标签的option标签中不支持如下方式的js实现的语言切换功能,如何解决?

php

用php就轻松搞定了

1 <select data-am-selected="{btnSize: 'sm'}" name="a_type" id="student_note_type_choose">
2     <option value="1" note_type="student_note_type_article">
3         <span class="fry_language_item fry_language_hk">文章類</span><span class="fry_language_item fry_language_en">Article</span>
4     </option>
5 </select>

对应的语言选择的js:

 1 <!--语言选择的js-->
 2 <script>
 3     function chooseLanguage(){
 4         $('.fry_language_item').hide();
 5         $('.fry_language_hk').show();
 6         var fry_language_type="fry_language_en";
 7         //console.log(fry_language_type);
 8         if(fry_language_type=="fry_language_hk"){
 9             $('.fry_language_item').hide();
10             $('.fry_language_hk').show();
11         }else if(fry_language_type=="fry_language_cn"){
12             $('.fry_language_item').hide();
13             $('.fry_language_cn').show();
14         }else if(fry_language_type=="fry_language_en"){
15             $('.fry_language_item').hide();
16             $('.fry_language_en').show();
17         }
18     }
19     chooseLanguage();
20 </script>
21 <!--END 语言选择的js-->

select标签的option标签不支持这样方式的原因:span被覆盖了,或者被重写了,或者是不知名的操作

4、网页源码查看js代码可能出现的误导是什么?

动 静

动态代码会被误当成静态代码

会看不到php,从而形成一定的误导

看到fry_language_type="fry_language_en"的时候,我会犹豫哪fry_language_type="fry_language_hk"的情况跑哪去了,

然后疑惑

所以看代码逻辑最好是看源码,而不是看网页源码,不过看网页源码可以知道这个页面到底运行了哪些代码

源码:

var fry_language_type="{$Think.session.fry_language_type}";

网页源代码:

var fry_language_type="fry_language_en";

5、百度echart图表的toolbox和legend重叠问题?

设置 位置

toolbox:工具箱,每个图表最多仅有一个工具箱。(也就是样例中几个工具图标)

legend:图例,每个图表最多仅有一个图例。(也就是样例中的最顶端的第几组 第几组的那个)

最后效果:

对应代码:

 1     option = {
 2         toolbox: {
 3             x:'center',
 4             y:'bottom',
 5             feature: {
 6                 dataView: {show: true, readOnly: false},
 7                 magicType: {show: true, type: ['line', 'bar']},
 8                 restore: {show: true,title:'restore'},
 9                 saveAsImage: {show: true}
10             }
11         },
12     }

主要是第3行第4行代码的作用

对应的参考手册的位置:ECharts · Doc
http://echarts.baidu.com/echarts2/doc/doc.html

因为这些部分都是可以设置位置的,所以设置一下位置就OK了。

6、thinkphp中配置文件如何使用?

config 助手函数

加载配置文件:

$fry_config=Config::load(APP_PATH.'fry_config.php');
dump($fry_config);die;

APP_PATH对应的路径为:define('APP_PATH', __DIR__ . '/../application/');

完全不用这样麻烦,

读取配置和修改配置如下:

echo config('配置参数1');

config('配置参数','配置值');

我们自己写的配置文件也会被系统默认读取:

$fry_config=Config::load(APP_PATH.'fry_config.php');

这样读取的配置不仅包括fry_config.php里面的,还包括系统默认自带的config.php里面的

7、什么情况下用数据库做配置字段,什么情况下用配置文件做配置?

配置文件 开发人员 重置
数据库 非开发人员 重启

配置文件做配置的特点:方便开发人员修改配置,服务器重启的话配置重置。

数据库做配置的特点:方便非开发人员修改配置,服务器重启的话配置不会受到影响。

8、php数据类型装换?

目标类型 转换函数

PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:

  • (int)、(integer):转换成整形
  • (float)、(double)、(real):转换成浮点型
  • (string):转换成字符串
  • (bool)、(boolean):转换成布尔类型
  • (array):转换成数组
  • (object):转换成对象

PHP数据类型有三种转换方式:

  • 在要转换的变量之前加上用括号括起来的目标类型
  • 使用3个具体类型的转换函数,intval()、floatval()、strval()   【记忆:想转换的目的类型+val()】
  • 使用通用类型转换函数settype(mixed var,string type)

第一种转换方式: (int)  (bool)  (float)  (string)  (array) (object)

  1. <?php
  2. $num1=3.14;
  3. $num2=(int)$num1;
  4. var_dump($num1); //输出float(3.14)
  5. var_dump($num2); //输出int(3)
  6. ?>

第二种转换方式:  intval()  floatval()  strval()

  1. <?php
  2. $str="123.9abc";
  3. $int=intval($str);     //转换后数值:123
  4. $float=floatval($str); //转换后数值:123.9
  5. $str=strval($float);   //转换后字符串:"123.9"
  6. ?>

第三种转换方式:  settype();

  1. <?php
  2. $num4=12.8;
  3. $flg=settype($num4,"int");
  4. var_dump($flg);  //输出bool(true)
  5. var_dump($num4); //输出int(12)
  6. ?>

9、数据库做更新操作时:“缺少更新条件”是哪种类型的错误?

主键
整表
update 那一行

a、没指明更新的主键

b、内容没有发生更新(这种情况不会报“缺少更新条件”的错误)

 1     //是否允許不同小組之間互相查看
 2     public function canDifGroupCheckAns(){
 3         if(request()->isAjax()){
 4             $state=input('state');
 5             $fry_database_config=db('1config')->select();
 6
 7             if($state){
 8                 $fry_database_config[0]['config_val']=strval(1);
 9             }else{
10                 $fry_database_config[0]['config_val']=strval(2);
11             }
12             //die;
13             $ans=db('1config')->update($fry_database_config);
14             if($ans===false) return false;
15             return true;
16         }
17     }

这是整表更新,也就是多维数据,不能直接用update

如果用update的话,那就更新你修改了的那一行

$ans=db('1config')->update($fry_database_config[0]);

10、配置文件变量的特点是什么?

全局变量

配置文件应该要是全局变量,这点无论是从thinkphp的配置的特点和工作方面的需求都可以发现

所以数据库做配置的那部分,要给它整成全局的,用父级控制器base即可

二、内容在总结中

转载于:https://www.cnblogs.com/Renyi-Fan/p/9907109.html

m_Orchestrate learning system---二十九、什么情况下用数据库做配置字段,什么情况下用配置文件做配置...相关推荐

  1. Bootstrap入门(二十九)JS插件6:弹出框

    Bootstrap入门(二十九)JS插件6:弹出框 加入小覆盖的内容,像在iPad上,用于存放非主要信息 弹出框是依赖于工具提示插件的,那它也和工具提示是一样的,是需要初始化才能够使用的 首先我们引入 ...

  2. FreeSql (二十九)Lambda 表达式

    FreeSql 支持功能丰富的表达式函数解析,方便程序员在不了解数据库函数的情况下编写代码.这是 FreeSql 非常特色的功能之一,深入细化函数解析尽量做到满意,所支持的类型基本都可以使用对应的表达 ...

  3. 【零基础学Java】—final关键字与四种用法(二十九)

    [零基础学Java]-final关键字与四种用法(二十九) 一.final关键字 final关键字代表最终.不可改变的 常见的四种用法: 可以用来修饰一个类 可以用来修饰一个方法 可以用来修饰一个局部 ...

  4. WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

    原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...

  5. Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四

    Spring Cloud 2.2.2 源码之二十九nacos客户端获取配置原理四 MetricsHttpAgent的httpGet ServerHttpAgent的httpGet HttpSimple ...

  6. OpenCV C++案例实战二十九《遥感图像分割》

    OpenCV C++案例实战二十九<遥感图像分割> 前言 一.准备数据 二.K-Means分类 三.效果显示 四.源码 总结 前言 本案例基于k-means机器学习算法进行遥感图像分割.主 ...

  7. BetaFlight模块设计之二十九:滤波模块分析

    BetaFlight模块设计之二十九:滤波模块分析 滤波模块 滤波类型 1. slewFilter 2. simpleLowpassFilter 3. laggedMovingAverage 4. p ...

  8. (二十九 ~ 三十一)巴菲特与索罗斯的投资习惯:投资习惯

    作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai (一)巴菲特与索罗斯的投资习惯:思考习惯的力量 (二)巴菲特与索罗斯的投资习惯:七种致命的投资信念 (三 ...

  9. 机器学习中的数学——距离定义(二十九):点间互信息(Pointwise Mutual Information, PMI)

    分类目录:<机器学习中的数学>总目录 相关文章: · 距离定义:基础知识 · 距离定义(一):欧几里得距离(Euclidean Distance) · 距离定义(二):曼哈顿距离(Manh ...

  10. android游戏性能测试,评测 篇二十九:用游戏数据来彰显实力,华为nova5i Pro游戏性能篇...

    评测 篇二十九:用游戏数据来彰显实力,华为nova5i Pro游戏性能篇 2020-01-02 00:20:00 4点赞 1收藏 2评论 笔者带着大家对华为nova5i Pro做了开箱测试,了解外观与 ...

最新文章

  1. 无贡献、无创新、无思路,ML领域准博士求助:论文到底要怎么创新?
  2. contos7设置固定ip和dns_CentOS7 修改设置静态IP和DNS
  3. python判断是否是小写字母_python判断字符串是字母 数字 大小写(转载)
  4. 深入理解 Ribbon-Hystrix-Feign 三者之间的关系(一)
  5. linux使用openssl查看文件的md5数值
  6. 在linux实现公平队列,多级反馈队列调度策略在Linux中的应用和实现.pdf
  7. kaggle比赛——房价预测
  8. OpenCV之图像的平滑(笔记09)
  9. 12306抢票脚本 python_春运抢票靠加速包?试试这个 Python 开源项目吧
  10. IOS8 AutoLayout+SizeClasses 基础篇(1)
  11. 2018南华大学计算机学院,南华大学2019年排名第214位 较2018年下降32名
  12. 416. Partition Equal Subset Sum
  13. LayaAir 音乐与音效
  14. activiti工作流 php,码云社 | 砺锋科技-SpringBoot整合Activiti工作流(附源码) - 用代码改变世界...
  15. 安卓模拟器按键_51模拟器app下载|51模拟器 3.2.1.2 最新版
  16. 代码检查技术Checkstyle与p3c调研
  17. MODBUS寄存器从40000开始而不从0开始,有什么特别的说法吗,还是仅仅是大家都习惯
  18. 通过AI,领略皮影戏艺术 | MixLab人工智能
  19. 京东到家订单中心 Elasticsearch 演进历程
  20. 数据库实验一:数据库与数据表定义(2)—— 数据表相关操作

热门文章

  1. [转]研究生阶段学习规划指导随笔
  2. 你可以分配多大的内存
  3. 思科BFD协议帮助侦测网络失败
  4. 黄聪:C#获取网页HTML内容的三种方式
  5. 山东CIO智库会员参观徐工信息公司
  6. 维密天使糖糖传授自拍秘籍,最满意自拍来自OPPO R11s
  7. slack 团队协作平台
  8. getCacheDir()和getFilesDir()方法区别
  9. MYSQLmy-innodb-heavy-4G.cnf配置文件注解
  10. 怎么把图片上的字去掉_视频片头怎么减掉,电脑如何剪切掉视频的开头「视频批量剪辑」...