最近想用php开发个简单的文章管理系统,主要是做一批垃圾采集站,目前网上的cms都太多功能了,导致修改个模板要很多文件,花费很多功夫。开始用thinkphp框架做,感觉还是麻烦,后来改用ci,做好了后台后又觉得不是很简洁
于是忠于狠下心来打算用原生的php开发一个,只有这样才最简洁。
其中遇到不少的问题,现在把一些关键技术点记录下来,都是找来的资料
一、配置文件读取
这个比较简单
config.php
--------------------------
return array(
'a' => 1,
'b' => 2,
'c' => 3,
getconfig.php
--------------------------
$config = require('config.php');
print_r($config);
大家试一下,会发现$config变量里存储了config.php中的数组, 这就是运用了php可以把文件当作return函数的一种用法。
来个稍微复杂点的
config.php
--------------------------
return array(
'master'=>array(
'master_host'=>'1',
'master_name'=>'1',
'master_password'=>'1',
'master_port'=>'1',
'slave1'=>array(
'slave_host'=>'2',
'slave_name'=>'2',
'slave_password'=>'2',
'slave_port'=>'2',
'slave2'=>array(
'slave_host'=>'3',
'slave_name'=>'3',
'slave_password'=>'3',
'slave_port'=>'3',
'master1'=>array(
'master_host'=>'5',
'master_name'=>'5',
'master_password'=>'5',
'master_port'=>'5',
'slave1'=>array(
'slave_host'=>'6',
'slave_name'=>'6',
'slave_password'=>'6',
'slave_port'=>'6',
'slave2'=>array(
'slave_host'=>'7',
'slave_name'=>'7',
'slave_password'=>'7',
'slave_port'=>'7',
getconfig.php
--------------------------
$config = require('config.php');
$config['db']['master']['host']= '';
$config['db']['master']['name']= '';
$config['db']['master']['password']= '';
$config['db']['master']['port']= '';
$config['db']['master']['slave1']['host']= '';
$config['db']['master']['slave1']['name']= '';
$config['db']['master']['slave1']['password']= '';
$config['db']['master']['slave1']['port']= '';
$config['db']['master']['slave2']['host']= '';
$config['db']['master']['slave2']['name']= '';
$config['db']['master']['slave2']['password']= '';
$config['db']['master']['slave2']['port']= '';
二、php 更新配置文件
$config_file="路径";
if(file_exists($config_file)){
$configs=include $config_file;
}else {
$configs=array();
$configs=array_merge($configs,$data);
$result = file_put_contents($config_file, "<?php\treturn " . var_export($configs, true) . ";");
var_export:输出或返回一个变量的字符串表示
此函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。
可以通过将函数的第二个参数设置为 TRUE
,从而返回变量的表示。
另外一种写法
$path='路径';//写入路径
$file=include $path;
$res = array_merge($file, array('key'=>$rolling));
$str = '<?php return array(';
foreach ($res as $key => $value){
// '\'' 单引号转义
//$str .= '\''.$key.'\''.'=>'.'\''.$value.'\''.',';
if (is_array($value)){
$str.= '\''.$key.'\''.'=>array(';
foreach ($value as $k=>$v){
$str.='\''.$k.'\''.'=>'.'\''.$v.'\''.',';
$str.='),';
}else{
$str.='\''.$key.'\''.'=>'.'\''.$value.'\''.',';
$str .= '); ';
$upfile =file_put_contents($path, $str);//写入文件