美文网首页
TP3.2网站系统配置(无数据表)思路

TP3.2网站系统配置(无数据表)思路

作者: 郭庆生活在别处 | 来源:发表于2019-02-22 17:31 被阅读2次

本质:修改配置文件信息然后读取的过程。

基本思路、以及实现流程:

1、添加系统配置信息;

2、获取系统配置数据;

3、把添加的系统配置信息写入系统配置文件(./Application/Common/Conf/config.php);

4、读取(展示)系统配置文件信息。

View层代码(部分)

<tr>
        <th width="15%"><i class="require-red">*</i>域名:</th>
         <td><input type="text" value="{$Think.config.DOMAIN}" name="domain"></td>
  </tr>

控制器代码

<?php
namespace Admin\Controller;
use Think\Controller;
class SystemController extends CommonController 
{
    public function lst(){
        if(IS_POST){
            $file='./Application/Common/Conf/config.php';
            $config=array_merge(include $file,array_change_key_case($_POST,CASE_UPPER));
            $str="<?php\r\nreturn ".var_export($config,true)."; ?>";
            if(file_put_contents($file, $str)){
                $this->success('修改配置项成功!',U('lst'));
            }else{
                $this->error('修改配置项失败!');
            }
            

            return;
        }
        $this->display();
    }

./Application/Common/Conf/config.php配置文件内容

<?php
return array (
  'DB_TYPE' => 'mysql',
  'DB_HOST' => 'localhost',
  'DB_NAME' => 'ssssp',
  'DB_USER' => 'root',
  'DB_PWD' => 'root',
  'DB_PORT' => 3306,
  'DB_PREFIX' => 'cs_',
  'DB_CHARSET' => 'utf8',
  'DOMAIN' => 'htpp://127.0.0.1/ca',
  'TITLE' => '郭庆的NBA官网',
  'KEYWORDS' => '郭庆,NBA,IVERSON',
  'DESCRIPTION' => '我是世界上跑得最快的郭庆',
  'EMAIL' => '173729225@qq.com'

); ?>

一、添加系统配置信息:界面和普通的友链修改等界面无异,增加网站title、keywords……等配置信息。

二、获取系统配置数据:include ./Application/Common/Conf/config.php 为数组形式,dump结果:

array(9) {
  ["DB_TYPE"]=>;
  string(5) "mysql"
  ["DB_HOST"]=>;
  string(9) "localhost"
  ["DB_NAME"]=>;
  string(3) "nba"
  ["DB_USER"]=>;
  string(4) "root"
  ["DB_PWD"]=>;
  string(7) "guoqing"
  ["DB_PORT"]=>;
  string(4) "3306"
  ["DB_PREFIX"]=>;
  string(4) "nba_"
  ["URL"]=>;
  string(14) "11111111111111"
  ["TITLE"]=>;
  string(6) "111111"
}

$_POST的结果为添加的配置信息:

array(2) {
  ["url"]=>;
  string(14) "11111111111111"
  ["title"]=>;
  string(6) "111111"
}

将配置文件原有的数据更新为新的配置数据:

1、将原有文件数据(数组形式)和添加的配置信息(数组形式)合并为一个数组。
使用函数:array_merge();
($_POST传过来的数组key为小写,需把key改为大写,使用函数;array_change_key_case());

2、将新旧合并后的配置信息按照原来配置文件的形式,转化为字符串,使用函数:var_export()
3、将字符串形式的配置数据写入配置文件,使用函数file_put_contents().

4、视图层读取配置信息:{$Think.config.TITLE}或者{:C(‘TITEL’)},都可以。

结束

使用到的函数:

array_merge();

array_merge(array1,array2,array3...) 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。

如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。

array_change_key_case()

array_change_key_case(array,case) -- 返回字符串键名全为小写或大写的数组

第一个参数 array,必需。规定要使用的数组。

第二个参数 case,可选。

                    CASE_LOWER - 默认值。以小写字母返回数组的键。

                    CASE_UPPER - 以大写字母返回数组的键。

var_export()

var_export() 函数返回关于传递给该[函数]的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。

file_put_contents().

file_put_contents() 函数把一个字符串写入文件中。
该函数访问文件时,遵循以下规则:
如果设置了 FILE_USE_INCLUDE_PATH,那么将检查 filename 副本的内置路径
如果文件不存在,将创建一个文件
打开文件
如果设置了 LOCK_EX,那么将锁定文件
如果设置了 FILE_APPEND,那么将移至文件末尾。否则,将会清除文件的内容
向文件中写入数据
关闭文件并对所有文件解锁
如果成功,该函数将返回写入文件中的字符数。如果失败,则返回 False。

相关文章

网友评论

      本文标题:TP3.2网站系统配置(无数据表)思路

      本文链接:https://www.haomeiwen.com/subject/fkpiyxtx.html