源碼閱讀-ThinkPHP-4-應(yīng)用初始化

說(shuō)好的應(yīng)用初始化

上回書(shū)說(shuō)到 ThinkPHP 框架入口文件公你,加載了框架Think.class.php,并執(zhí)行了靜態(tài)方法start()假瞬。那么在start()這個(gè)靜態(tài)方法中陕靠,又做了哪些呢迂尝?

本回書(shū)繼續(xù)說(shuō)道說(shuō)道。

應(yīng)用初始化做什么剪芥?

如下步驟:

注冊(cè)AUTOLOAD方法

spl_autoload_register('Think\Think::autoload'); 

使用spl_autoload_register注冊(cè)了Think\Think::autoload這個(gè)靜態(tài)方法垄开,當(dāng)類不存在的時(shí)候調(diào)用這個(gè)方法,以自動(dòng)加載不存在的類税肪。

設(shè)定錯(cuò)誤和異常處理

register_shutdown_function('Think\Think::fatalError');
set_error_handler('Think\Think::appError');
set_exception_handler('Think\Think::appException');

當(dāng) PHP 終止執(zhí)行的時(shí)候溉躲,當(dāng) PHP 執(zhí)行錯(cuò)誤的時(shí)候,當(dāng) PHP 拋出異常的時(shí)候,一直這些函數(shù)設(shè)定的靜態(tài)方法益兄,來(lái)處理錯(cuò)誤與異常锻梳。

初始化文件存儲(chǔ)方式

Storage::connect(STORAGE_TYPE);

這里的STORAGE_TYPE的值有兩種可能,分別是Sae或者File

SAE 是新浪云平臺(tái)偏塞,由于不支持直接寫(xiě)入文件唱蒸,所以這里定義了 SAE 的模式邦鲫。

加載核心文件

加載什么核心文件呢灸叼?

$mode   =   include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php';

吐槽一下這種寫(xiě)法,不直觀庆捺,我覺(jué)得應(yīng)該在寫(xiě)成include(),而不是include古今。

如果/ThinkPHP/Think/core.php不存在,那么加載/ThinkPHP/Model/common.php滔以。

foreach ($mode['core'] as $file){
    if(is_file($file)) {
    include $file;
    if(!APP_DEBUG) 
        $content   .=  compile($file);
    }
}

這里的$file都是寫(xiě)什么捉腥?我們來(lái)看看/ThinkPHP/Modle/common.php

'core'      =>  array(
    THINK_PATH.'Common/functions.php',
    COMMON_PATH.'Common/function.php',
    CORE_PATH . 'Hook'.EXT,
    CORE_PATH . 'App'.EXT,
    CORE_PATH . 'Dispatcher'.EXT,
    //CORE_PATH . 'Log'.EXT,
    CORE_PATH . 'Route'.EXT,
    CORE_PATH . 'Controller'.EXT,
    CORE_PATH . 'View'.EXT,
    BEHAVIOR_PATH . 'BuildLiteBehavior'.EXT,
    BEHAVIOR_PATH . 'ParseTemplateBehavior'.EXT,
    BEHAVIOR_PATH . 'ContentReplaceBehavior'.EXT,
),

引入了function文件你画,終于可以使用dump()函數(shù)了抵碟,真高興。之后的代碼中可以看到例如C()這樣的單字母大寫(xiě)函數(shù)了坏匪。

終于看到Route拟逮、Controller以及View這些單詞了,距離 MVC 還遠(yuǎn)嗎适滓?

加載核心的配置文件:

foreach ($mode['config'] as $key=>$file){
    is_numeric($key)?C(load_config($file)):C($key,load_config($file));
}

哪些核心的配置文件:

'config'    =>  array(
    THINK_PATH.'Conf/convention.php',   // 系統(tǒng)慣例配置
    CONF_PATH.'config'.CONF_EXT,      // 應(yīng)用公共配置
),

然后需要加載用戶的配置文件:

foreach ($mode['config'] as $key=>$file){
    is_numeric($key)?C(load_config($file)):C($key,load_config($file));
}

加載模式別名定義

加載應(yīng)用別名定義文件

加載模式行為定義

加載應(yīng)用行為定義

加載框架底層語(yǔ)言包

讀取當(dāng)前應(yīng)用狀態(tài)對(duì)應(yīng)的配置文件

設(shè)置系統(tǒng)時(shí)區(qū)

date_default_timezone_set(C('DEFAULT_TIMEZONE'));

設(shè)定用于一個(gè)腳本中所有日期時(shí)間函數(shù)的默認(rèn)時(shí)區(qū)敦迄。

檢查應(yīng)用目錄結(jié)構(gòu)

檢查目錄的結(jié)構(gòu),如果不存在凭迹,則創(chuàng)建罚屋。

  if(C('CHECK_APP_DIR')) {
      $module     =   defined('BIND_MODULE') ? BIND_MODULE : C('DEFAULT_MODULE');
      if(!is_dir(APP_PATH.$module) || !is_dir(LOG_PATH)){
          // 檢測(cè)應(yīng)用目錄結(jié)構(gòu)
          Build::checkDir($module);
      }
  }

記錄加載文件時(shí)間

G('loadTime');

運(yùn)行應(yīng)用

App::run();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嗅绸,隨后出現(xiàn)的幾起案子脾猛,更是在濱河造成了極大的恐慌,老刑警劉巖鱼鸠,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猛拴,死亡現(xiàn)場(chǎng)離奇詭異喉刘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)漆弄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)睦裳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人撼唾,你說(shuō)我怎么就攤上這事廉邑。” “怎么了倒谷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵蛛蒙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我渤愁,道長(zhǎng)牵祟,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任抖格,我火速辦了婚禮诺苹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘雹拄。我一直安慰自己收奔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布滓玖。 她就那樣靜靜地躺著坪哄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪势篡。 梳的紋絲不亂的頭發(fā)上翩肌,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音禁悠,去河邊找鬼念祭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绷蹲,可吹牛的內(nèi)容都是我干的棒卷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼祝钢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼比规!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拦英,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜒什,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后疤估,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體灾常,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霎冯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钞瀑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沈撞。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雕什,靈堂內(nèi)的尸體忽然破棺而出缠俺,到底是詐尸還是另有隱情,我是刑警寧澤贷岸,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布壹士,位于F島的核電站,受9級(jí)特大地震影響偿警,放射性物質(zhì)發(fā)生泄漏躏救。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一螟蒸、第九天 我趴在偏房一處隱蔽的房頂上張望盒使。 院中可真熱鬧,春花似錦尿庐、人聲如沸忠怖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至枉疼,卻和暖如春皮假,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骂维。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工惹资, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人航闺。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓褪测,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親潦刃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侮措,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

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

  • 本系列文章基于 ThinkPHP 3.2.3 版本。 tp 框架是單入口乖杠,一般是先從 index.php 開(kāi)始分扎。在...
    小拿大魔王閱讀 787評(píng)論 0 3
  • 可以查看我做的簡(jiǎn)易流程圖。 也可以看官方的標(biāo)準(zhǔn)答案胧洒。 用戶URL請(qǐng)求 調(diào)用應(yīng)用入口文件(通常是網(wǎng)站的index.p...
    蘇近之2017閱讀 781評(píng)論 0 3
  • 一畏吓、獲取ThinkPHP 獲取ThinkPHP的方式很多墨状,官方網(wǎng)站(http://thinkphp.cn)是最好的...
    Transnet2014閱讀 2,443評(píng)論 1 31
  • 在我個(gè)人的概念里,空氣凈化器一直都不是必需品菲饼,我曾經(jīng)認(rèn)為這是某種意義上的奢侈品肾砂。因?yàn)槲矣X(jué)得這是追求生活品質(zhì)的人才會(huì)...
    abigsmile閱讀 169評(píng)論 0 0
  • 前一陣子在教會(huì)圣靈感動(dòng)我,我突然很想買(mǎi)一個(gè)口琴吹贊美詩(shī)用來(lái)敬拜我主!圣靈加給我很多恩賜宏悦,從來(lái)未學(xué)過(guò)樂(lè)器的我通今,第一天...
    神的子民閱讀 1,210評(píng)論 1 0