摘要:命名空間的作用解決重名問(wèn)題。不同的命名空間中,可以存在相同類(lèi)名和函數(shù)名。完全限定名稱(chēng),或包含了全局前綴操作符的名稱(chēng),例如,或。源碼分享書(shū)簽從零開(kāi)始打造自己的框架使用命名空間基礎(chǔ)使用命名空間后備全局函數(shù)常量基礎(chǔ)安裝進(jìn)階安裝
目標(biāo)
本篇,我們來(lái)實(shí)現(xiàn)加載控制器、數(shù)據(jù)查詢和頁(yè)面渲染。
原文地址:http://www.voidking.com/2017/...
加載控制器 控制器在app目錄下,新建ctrl目錄,ctrl目錄下新建indexCtrl.php文件,內(nèi)容如下:
調(diào)用控制器在根目錄下的index.php文件中,繼續(xù)添加:
include CORE."/autoload.php"; spl_autoload_register("coreautoload::load"); $route = new core oute(); $ctrl = $route->ctrl; $action = $route->action; $params = $route->params; $ctrl_file = APP."/ctrl/".$ctrl."Ctrl.php"; $ctrl_class = "appctrl".$ctrl."Ctrl"; if(is_file($ctrl_file)){ include $ctrl_file; $ctrl_obj = new $ctrl_class; $ctrl_obj->$action(); }else { throw new Exception("找不到控制器".$ctrl_file); }訪問(wèn)地址 http://vkphp.dev ,即可看到“index ctrl”。
數(shù)據(jù)查詢1、在mysql中,新建數(shù)據(jù)庫(kù)vkphp。
2、在vkphp數(shù)據(jù)庫(kù)中,新建表vk_user,字段包括id、username和password。
3、在common文件夾下,新建db.php,內(nèi)容如下:
getMessage(); } } }4、在indexCtrl.php中,添加:
public function data(){ $db = new corecommondb(); $sql = "select * from vk_user"; $result = $db->query($sql); p($result); p($result->fetchAll()); }訪問(wèn)地址 http://vkphp.dev/index/data ,即可看到從數(shù)據(jù)庫(kù)中查詢出的數(shù)據(jù)。
頁(yè)面渲染頁(yè)面渲染,主要有兩部分工作:賦值和顯示。我們需要實(shí)現(xiàn)兩個(gè)函數(shù):assign和display。
1、在app目錄下新建view目錄,view目錄下新建index目錄,index目錄中新建render.html,內(nèi)容如下:
Render 第一個(gè)視圖
用戶名:
2、在core目錄中,添加render.php,內(nèi)容如下:
params[$name] = $value; } public function display($file){ $file = APP."/view/".$file; if(is_file($file)){ extract($this->params); //把數(shù)組變成變量 include $file; } } }3、修改indexCtrl.php如下:
assign("username","voidking"); $this->display("index/render.html"); } }訪問(wèn)地址 http://vkphp.dev/index/render ,即可看到渲染出的頁(yè)面。
頁(yè)面渲染進(jìn)階直接在頁(yè)面echo,難以體現(xiàn)水平,我們來(lái)安裝一個(gè)模板引擎――smarty。
命名空間接下來(lái)smarty的使用,牽涉到命名空間這個(gè)知識(shí)點(diǎn),在此學(xué)習(xí)一下。
首先聲明:命名空間和文件路徑?jīng)]有關(guān)系,沒(méi)有關(guān)系,沒(méi)有關(guān)系!雖然,在使用命名空間時(shí)經(jīng)常參考文件路徑,但是,它們沒(méi)有必然關(guān)系。
命名空間的作用:解決重名問(wèn)題。不同的命名空間中,可以存在相同類(lèi)名和函數(shù)名。我們?cè)谑褂靡粋€(gè)類(lèi)和函數(shù)時(shí),必須明確指出使用的是哪一個(gè)命名空間中的類(lèi)和函數(shù)。
上文我們說(shuō)到,在文件系統(tǒng)中訪問(wèn)一個(gè)文件有三種方式,PHP命名空間中的元素使用同樣的原理。例如,類(lèi)名可以通過(guò)三種方式引用:
1、非限定名稱(chēng),或不包含前綴的類(lèi)名稱(chēng),例如 $a=new foo(); 或 foo::staticmethod(); 。如果當(dāng)前命名空間是 currentnamespace,foo 將被解析為 currentnamespacefoo ;如果當(dāng)前沒(méi)有指定命名空間,則foo會(huì)被解析為 foo。
2、限定名稱(chēng),或包含前綴的名稱(chēng),例如 $a = new subnamespacefoo(); 或 subnamespacefoo::staticmethod(); 。如果當(dāng)前的命名空間是 currentnamespace,則 foo 會(huì)被解析為 currentnamespacesubnamespacefoo ;如果當(dāng)前沒(méi)有指定命名空間,foo 會(huì)被解析為subnamespacefoo。
3、完全限定名稱(chēng),或包含了全局前綴操作符的名稱(chēng),例如,$a = new currentnamespacefoo(); 或 currentnamespacefoo::staticmethod();。在這種情況下,foo 總是被解析為代碼中的文字名(literal name) currentnamespacefoo。下面舉個(gè)栗子:
下載安裝smarty1、訪問(wèn)smarty官方下載 ,下載smarty,小編下載的是3.1.30版本。
2、在根目錄下新建lib,解壓smarty到lib目錄下,重命名文件夾為smarty。
使用smarty1、在app目錄下新建smarty目錄,smarty目錄下新建templates、template_c、configs、cache四個(gè)目錄。
2、在templates目錄下新建index目錄,index目錄中新建render2.html,內(nèi)容如下:
Smarty 第一個(gè)Smarty頁(yè)面
用戶名:{{$username}}
3、修改core目錄下的render.php如下:
smarty = new Smarty(); $this->smarty->setTemplateDir(APP."/smarty/templates/"); $this->smarty->setCompileDir(APP."/smarty/templates_c/"); $this->smarty->setConfigDir(APP."/smarty/configs/"); $this->smarty->setCacheDir(APP."/smarty/cache/"); } public $params = array(); public function assign($name,$value){ $this->params[$name] = $value; } public function display($file){ $file = APP."/view/".$file; if(is_file($file)){ extract($this->params); //把數(shù)組變成變量 include $file; } } }4、修改indexCtrl.php如下:
smarty->assign("username","voidking"); $this->smarty->display("index/render2.html"); } }訪問(wèn)地址 http://vkphp.dev/index/render2 ,即可看到渲染出的頁(yè)面。
源碼分享https://github.com/voidking/v...
書(shū)簽從零開(kāi)始打造自己的PHP框架
使用命名空間:基礎(chǔ)
使用命名空間:后備全局函數(shù)/常量
smarty基礎(chǔ)安裝
smarty進(jìn)階安裝
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/25856.html
摘要:前言第到章,我們完成了一個(gè)屬于自己的框架,麻雀雖小五臟俱全。接下來(lái),我們使用框架開(kāi)發(fā)一個(gè)迷你項(xiàng)目書(shū)簽收藏。內(nèi)包含框架的核心文件。源碼分享書(shū)簽從零開(kāi)始打造自己的框架與之詳解 前言 第0到5章,我們完成了一個(gè)屬于自己的php框架,麻雀雖小五臟俱全。接下來(lái),我們使用vkphp框架開(kāi)發(fā)一個(gè)迷你項(xiàng)目——書(shū)簽收藏。在開(kāi)發(fā)過(guò)程中,也許會(huì)遇到很多問(wèn)題,這時(shí)候我們就可以對(duì)框架進(jìn)行調(diào)整,使之更加完善。 系...
摘要:市場(chǎng)上已經(jīng)有了這么多好的框架,為什么還要開(kāi)發(fā)自己的框架答假裝大神。為了在裝神的道路上走的更遠(yuǎn),小編決定開(kāi)發(fā)一個(gè)自己的框架,命名為。源碼分享書(shū)簽從零開(kāi)始打造自己的框架 前言 使用過(guò)thinkphp和yii,涉獵過(guò)shopnc。市場(chǎng)上已經(jīng)有了這么多好的框架,為什么還要開(kāi)發(fā)自己的框架?答:假裝大神。為了在裝神的道路上走的更遠(yuǎn),小編決定開(kāi)發(fā)一個(gè)自己的php框架,命名為vkphp。 原文地址:h...
摘要:本篇,我們就在自己的項(xiàng)目中使用來(lái)進(jìn)行依賴管理。輸入,即可安裝依賴到目錄中,并且自動(dòng)生成和。安裝依賴,提示從提示可以看出,讀取的是中的依賴,而不是最新的。訪問(wèn),正常工作。源碼分享書(shū)簽從零開(kāi)始打造自己的框架中文網(wǎng)中文文檔 Composer Composer 是 PHP5.3以上 的一個(gè)依賴管理工具。它允許你申明項(xiàng)目所依賴的代碼庫(kù),它會(huì)在你的項(xiàng)目中為你安裝他們。Composer 不是一個(gè)包管...
摘要:小結(jié)至此,整個(gè)框架已經(jīng)基本完成。接下來(lái),我們會(huì)開(kāi)發(fā)一個(gè)迷你項(xiàng)目,在開(kāi)發(fā)的過(guò)程中,測(cè)試并改進(jìn)我們的框架。源碼分享書(shū)簽從零開(kāi)始打造自己的框架官方文檔中文文檔 目標(biāo) 使用medoo插件來(lái)連接和操作數(shù)據(jù)庫(kù)。 原文鏈接:http://www.voidking.com/2017/... medoo基礎(chǔ) 安裝medoo 1、在composer中添加依賴: catfan/medoo: * 2、更新依賴...
摘要:內(nèi)包含框架的核心文件。在目錄中,新建,內(nèi)容如下判斷文件是否存在判斷配置是否存在沒(méi)有配置項(xiàng)找不到配置文件找不到配置文件配置類(lèi)在目錄中,新建配置文件和。使用修改目錄中的和。源碼分享書(shū)簽從零開(kāi)始打造自己的框架 目標(biāo) 本篇,我們的目標(biāo)有三個(gè): 調(diào)整項(xiàng)目結(jié)構(gòu) 加載配置類(lèi) 添加日志類(lèi) 原文地址:http://www.voidking.com/2017/... 調(diào)整項(xiàng)目結(jié)構(gòu) vkphp ├─ap...
閱讀 1167·2021-10-14 09:43
閱讀 1225·2021-10-11 11:07
閱讀 3167·2021-08-18 10:23
閱讀 1542·2019-08-29 16:18
閱讀 1061·2019-08-28 18:21
閱讀 1543·2019-08-26 12:12
閱讀 3828·2019-08-26 10:11
閱讀 2567·2019-08-23 18:04