目标
本篇,我们的目标有三个:
- 调整项目结构
- 加载配置类
- 添加日志类
调整项目结构
vkphp
├─app
│ ├─ctrl
│ ├─model
│ ├─smarty
│ └─view
├─config
├─core
├─lib
├─log
└─public
- app内包含控制器、数据库model、smarty模板、普通渲染模板。
- config内包含全局配置文件。
- core内包含框架的核心文件。
- lib内包含第三方库。
- log内存放日志文件。
- public包含静态资源文件。
加载配置类
我们之前的路由配置、数据库配置都是写在程序中的,修改起来不方便,下面我们把这些配置都放在配置文件中。
conf.php
在core目录中,新建conf.php,内容如下:
<?php
namespace core;
class conf{
public function get($name,$file){
/**
* 1、判断文件是否存在
* 2、判断配置是否存在
*/
$file_path = CONFIG.'/'.$file.'.php';
if(is_file($file_path)){
$conf = include $file_path;
if(isset($conf[$name])){
return $conf[$name];
}else{
throw new \Exception('没有配置项'.$name);
}
}else{
throw new \Exception('找不到配置文件'.$file);
}
}
public function all($file){
$file_path = CONFIG.'/'.$file.'.php';
if(is_file($file_path)){
$conf = include $file_path;
return $conf;
}else{
throw new \Exception('找不到配置文件'.$file);
}
}
}
配置类
在config目录中,新建配置文件route_config.php和db_config.php。
<?php
return array(
'CTRL'=>'index',
'ACTION'=>'index'
);
<?php
return array(
'DSN'=>'mysql:host=localhost;dbname=vkphp',
'USER'=>'root',
'PASSWD'=>''
);
使用
修改core目录中的route.php和db.php。
<?php
/**
* 路由控制
*/
namespace core;
class route{
public $ctrl='index';
public $action='index';
public $params=array();
public function __construct(){
//echo 'route is ready!';
/**
* 1、隐藏index.php
* 2、获取URL中的控制器和方法
* 3、获取URL中的参数
*/
$this->ctrl = \core\conf::get('CTRL','route_config');
$this->action = \core\conf::get('ACTION','route_config');
// 其他不变
}
<?php
namespace core;
class db extends \PDO{
public function __construct(){
$conf = \core\conf::all('db_config');
$dsn = $conf['DSN'];
$user = $conf['USER'];
$passwd = $conf['PASSWD'];
try{
parent::__construct($dsn,$user,$passwd);
// echo 'database connect success';
}catch (\Exception $e){
echo $e->getMessage();
}
}
}
添加日志类
log.php
在core目录,添加log.php文件,内容如下:
<?php
namespace core;
class log{
public function log($message,$file_name){
$log_path = LOG.'/'.$file_name.'-'.date('YmdHis').'.log';
$message = date('Y-m-d H:i:s').' '.$message;
file_put_contents($log_path,json_encode($message));
}
}
使用
在indexCtrl.php中,添加:
public function log(){
$log = new \core\log();
$log->log('this is log','log_test');
echo '成功写入日志';
}
访问 http://vkphp.dev/index/log ,即可在log目录下生成日志文件。
如果时间不正确,就在php.ini中搜索 date.timezone
,然后修改时区为:
data.timezone="Asia/Shanghai"
或者,直接在程序代码中使用函数ini_set('date.timezone','Asia/Shanghai');
,或者date_default_timezone_set(‘Asia/Shanghai');
。
源码分享
https://github.com/voidking/vkphp/releases/tag/v1.3.0