從零開始打造自己的PHP框架——第3章

目標(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

書簽

從零開始打造自己的PHP框架

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匙赞,隨后出現(xiàn)的幾起案子佛掖,更是在濱河造成了極大的恐慌妖碉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芥被,死亡現(xiàn)場離奇詭異欧宜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拴魄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門鱼鸠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羹铅,你說我怎么就攤上這事∮淅ィ” “怎么了职员?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長跛溉。 經(jīng)常有香客問我焊切,道長,這世上最難降的妖魔是什么芳室? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任专肪,我火速辦了婚禮,結(jié)果婚禮上堪侯,老公的妹妹穿的比我還像新娘嚎尤。我一直安慰自己,他們只是感情好伍宦,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布芽死。 她就那樣靜靜地躺著,像睡著了一般次洼。 火紅的嫁衣襯著肌膚如雪关贵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天卖毁,我揣著相機(jī)與錄音揖曾,去河邊找鬼。 笑死亥啦,一個胖子當(dāng)著我的面吹牛炭剪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禁悠,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼念祭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碍侦?” 一聲冷哼從身側(cè)響起粱坤,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤隶糕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后站玄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枚驻,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年株旷,在試婚紗的時候發(fā)現(xiàn)自己被綠了再登。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡晾剖,死狀恐怖锉矢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情齿尽,我是刑警寧澤沽损,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站循头,受9級特大地震影響绵估,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卡骂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一国裳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧全跨,春花似錦缝左、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至七嫌,卻和暖如春少办,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诵原。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工英妓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绍赛。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓蔓纠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吗蚌。 傳聞我的和親對象是個殘疾皇子腿倚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容