@mkdir()-->file_put_contents-->$data =  "<?php\nreturn ".var_export($setting, true).';'  --> $settings[$app] = include($path);

加true,赋值给新变量,不输出,

$data = $this->db->select("SELECT `var`,`value` FROM `$this->table` WHERE `app`=?", array($app));
foreach($data as $v){
$setting[$v['var']] = $v['value'];
}

<?php

function create($structure, $mode = 0755, $force = false)
{

return @mkdir($structure, $mode);

}

//读取数据库,重新遍历.放入一个新数组,

//01创建目录

//02写入文件

create('system');

$setting = "<?php\nreturn ".var_export($setting, true).';'; //php换行.return拼接 所有数组的值
return file_put_contents('./system/setting.php', $setting);

$a = array('var'=>'sitename','value'=>'天山云');
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
var_export($a); //原样输出数组,保留大括号,适合file_put_contents 写入文件
echo '<hr>';
var_dump($a); //数组转花括号,下标加了中括号,值加了类型,无法继续给其他php程序使用.适合显示给用户看

array ( 'var' => 'sitename', 'value' => '天山云', ) //var_export($a);
array(2) { ["var"]=> string(8) "sitename" ["value"]=> string(9) "天山云" } //var_dump($a);

主程序中,执行前_before_execute.先把设置数据,从库中读取出来.缓存到cache目录下
$setting = setting('system');

01调用公共方法settin()
02get获取数据--什么静态数组.如果存在直接返回.没有就重新生成缓存
self::getInstance()->cache($app);
使用方法,代替静态对象self::getInstance()

static function getInstance() {//如果没有就新建对象,返回对象
if(!self::$objInstance){
$objInstance = new setting();
}
return $objInstance;
}

03读取数据库,变量好数组.放入新数组中.
04写入php文件,先检查没有目录.先创建目录

数据表

setting表 3个字段
app模块,var属性.value值
文章模块,
评论模块:
敏感词汇:主席,岛国大片
页码:
系统模块
关键词,描述,网站标题,网站url,图片压缩.宽高

如:遇到二维数组.把数组值取出.在eval中赋值给一个变量$newval.执行后.$newval就是数组的值了
foreach ($data as $r)
{
if (substr($r['value'], 0, 5) === 'array') //截取遍历后的值.开头5位是array就是二维数组
{
eval("\$newval = {$r['value']};"); //需要解析二位数组的值(使用花括号),赋值给一个新变量.新变量需要原样保留$,需要反斜杠转义
$setting[$r['var']] = $newval;
}

上面别人的方法.可以不用eval.一样可以达到效果.
都不用判断是否为数组.遍历.放入新数组中.就可以
foreach($data as $v){
$result[$v['var']] = $v['value'];
}

缓存1 静态缓存-->读库保存成php文件 mkdir-->file_put_contents-->var_export -->include的更多相关文章

  1. tcpdump抓包并保存成cap文件

    首选介绍一下tcpdump的常用参数 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接 ...

  2. ThinkPHP 3.2.3 数据缓存与静态缓存

    ThinkPHP 3.2.3 中手册中数据缓存的地址是:http://www.kancloud.cn/manual/thinkphp/1835 静态缓存的地址是:http://www.kancloud ...

  3. Thinkphp 缓存和静态缓存局部缓存设置

    1.S方法缓存设置 if(!$rows = S('indexBlog')){ //*$rows = S('indexBlog') $rows = D('blog')->select(); S(' ...

  4. thinkphp3.2局部不缓存的静态缓存

    在thinkphp中,对于访问量大的网站可以用静态缓存来越过数据库瓶颈来提高访问速度,但有时候并不是整个页面都要缓存的,如登录的用户名部分,那么如何实现局部不缓存呢? 其实有多种方法,但对于Think ...

  5. opencv::将两幅图像合并后,在同一个窗口显示;并将合并的图像流保存成视频文件

    /** * @file main-opencv.cpp * @date July 2014 * @brief An exemplative main file for the use of ViBe ...

  6. python文件目录遍历保存成xml文件代码

    Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...

  7. InputStream流保存成图片文件

    public void saveBit(InputStream inStream) throws IOException{ ByteArrayOutputStream outStream = new ...

  8. Android吧数据保存成xml文件

    public class MainActivity extends Activity { private List<Person> persons; @Override protected ...

  9. SQLServer数据库表架构和数据保存成sql文件

    一.先在你的mssql数据库中点击“数据库–>任务–>生成脚本” 二.然后我们会看到有“生成和发布脚本”窗口 下一步 三.选择要编写脚本的数据库对象,全部导出选第一个,如果你想导出部分数据 ...

随机推荐

  1. Python ---------copy

    copy---探索 1.浅copy    就相当于把变量指针指向对象 相当于给对象从新起了个小名 a=[[1,2],3,4] a=[[1,2],3,4] b=a.copy() # print(a) # ...

  2. hibernate 和 jdbc 优缺点对比

    jdbc缺点: 1.编程繁琐,用的try和catch比较多 2.jdbc没有对数据做缓存 3.没有做到面向对象编程 4.sql语句的跨平台性很差 jdbc优点: 效率比较高 hibernate的优点: ...

  3. 用VB把xls转换为xlsx

    Sub xls批量转换成xlsx()Application.ScreenUpdating = FalseMsgBox "现在开始转换,请稍候!"mypath = ThisWorkb ...

  4. Django开发环境配置

    Eclipse   首先需要去Eclipse官网下载:http://www.eclipse.org/,Eclipse需要JDK支持,如果Eclipse无法正常运行,请到Java官网下载JDK安装:ht ...

  5. 关于C++中的重定位

    "标准库定义了4个IO对象,处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入.处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出.标准库还 ...

  6. 触发器实现对插入数据的字段更改 Oracle+SQL Server

    最近有个使用触发器实现对插入数据的某个列做更改的需求,因此整理了Oracle和SQL Server对于此类需求的触发器写法,本文仅提到了Insert触发器. 首先我们创建一张表: --创建Test表 ...

  7. android --拍照,从相册获取图片,兼容高版本,兼容小米手机

    前几天做项目中选择图片的过程中遇到高版本和小米手机出现无法选择和崩溃的问题,现在记录下来,后面出现同类问题,也好查找 1,定义常量: private static final int TAKE_PIC ...

  8. JavaScript功能规划的基本语法总结

    1.迭代数组 1)map 方法会迭代数组中的每一个元素,并根据回调函数来处理每一个元素,最后返回一个新数组.注意,这个方法不会改变原始数组 //例子 var oldArray = [1,2,3,4,5 ...

  9. wep密钥的长度

    理论上,WEP可以搭配任意长度的密钥,因为RC4并未要求非得使用特定长度的密钥. 不过,大多数产品均支持一种或两种长度的密钥.唯一出现在标准中的密钥长度时64位的WEP种子(seed),其中40位是两 ...

  10. Openjudge-计算概论(A)-单词倒排

    描述: 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔. 输入输入为一个字符串(字符串长度至多为100).输出输出为按要求排续后的字符 ...