目標(biāo)
本篇上煤,我們的目標(biāo)有三個:
- 調(diào)整項(xiàng)目結(jié)構(gòu)
- 加載配置類
- 添加日志類
調(diào)整項(xiàng)目結(jié)構(gòu)
vkphp
├─app
│ ├─ctrl
│ ├─model
│ ├─smarty
│ └─view
├─config
├─core
├─lib
├─log
└─public
- app內(nèi)包含控制器、數(shù)據(jù)庫model、smarty模板娇哆、普通渲染模板。
- config內(nèi)包含全局配置文件勃救。
- core內(nèi)包含框架的核心文件碍讨。
- lib內(nèi)包含第三方庫。
- log內(nèi)存放日志文件蒙秒。
- public包含靜態(tài)資源文件勃黍。
加載配置類
我們之前的路由配置、數(shù)據(jù)庫配置都是寫在程序中的晕讲,修改起來不方便覆获,下面我們把這些配置都放在配置文件中。
conf.php
在core目錄中益兄,新建conf.php锻梳,內(nèi)容如下:
<?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('沒有配置項(xiàng)'.$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中的參數(shù)
*/
$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文件,內(nèi)容如下:
<?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
宁玫,然后修改時區(qū)為:
data.timezone="Asia/Shanghai"
或者,直接在程序代碼中使用函數(shù)ini_set('date.timezone','Asia/Shanghai');
柑晒,或者date_default_timezone_set(‘Asia/Shanghai');
欧瘪。
源碼分享
https://github.com/voidking/vkphp/releases/tag/v1.3.0