摘要:命名空間的作用解決重名問題。不同的命名空間中,可以存在相同類名和函數(shù)名。完全限定名稱,或包含了全局前綴操作符的名稱,例如,或。源碼分享書簽從零開始打造自己的框架使用命名空間基礎使用命名空間后備全局函數(shù)常量基礎安裝進階安裝
目標
本篇,我們來實現(xiàn)加載控制器、數(shù)據(jù)查詢和頁面渲染。
原文地址: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); }訪問地址 http://vkphp.dev ,即可看到“index ctrl”。
數(shù)據(jù)查詢1、在mysql中,新建數(shù)據(jù)庫vkphp。
2、在vkphp數(shù)據(jù)庫中,新建表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()); }訪問地址 http://vkphp.dev/index/data ,即可看到從數(shù)據(jù)庫中查詢出的數(shù)據(jù)。
頁面渲染頁面渲染,主要有兩部分工作:賦值和顯示。我們需要實現(xiàn)兩個函數(shù):assign和display。
1、在app目錄下新建view目錄,view目錄下新建index目錄,index目錄中新建render.html,內(nèi)容如下:
Render 第一個視圖
用戶名:
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"); } }訪問地址 http://vkphp.dev/index/render ,即可看到渲染出的頁面。
頁面渲染進階直接在頁面echo,難以體現(xiàn)水平,我們來安裝一個模板引擎――smarty。
命名空間接下來smarty的使用,牽涉到命名空間這個知識點,在此學習一下。
首先聲明:命名空間和文件路徑?jīng)]有關系,沒有關系,沒有關系!雖然,在使用命名空間時經(jīng)常參考文件路徑,但是,它們沒有必然關系。
命名空間的作用:解決重名問題。不同的命名空間中,可以存在相同類名和函數(shù)名。我們在使用一個類和函數(shù)時,必須明確指出使用的是哪一個命名空間中的類和函數(shù)。
上文我們說到,在文件系統(tǒng)中訪問一個文件有三種方式,PHP命名空間中的元素使用同樣的原理。例如,類名可以通過三種方式引用:
1、非限定名稱,或不包含前綴的類名稱,例如 $a=new foo(); 或 foo::staticmethod(); 。如果當前命名空間是 currentnamespace,foo 將被解析為 currentnamespacefoo ;如果當前沒有指定命名空間,則foo會被解析為 foo。
2、限定名稱,或包含前綴的名稱,例如 $a = new subnamespacefoo(); 或 subnamespacefoo::staticmethod(); 。如果當前的命名空間是 currentnamespace,則 foo 會被解析為 currentnamespacesubnamespacefoo ;如果當前沒有指定命名空間,foo 會被解析為subnamespacefoo。
3、完全限定名稱,或包含了全局前綴操作符的名稱,例如,$a = new currentnamespacefoo(); 或 currentnamespacefoo::staticmethod();。在這種情況下,foo 總是被解析為代碼中的文字名(literal name) currentnamespacefoo。下面舉個栗子:
下載安裝smarty1、訪問smarty官方下載 ,下載smarty,小編下載的是3.1.30版本。
2、在根目錄下新建lib,解壓smarty到lib目錄下,重命名文件夾為smarty。
使用smarty1、在app目錄下新建smarty目錄,smarty目錄下新建templates、template_c、configs、cache四個目錄。
2、在templates目錄下新建index目錄,index目錄中新建render2.html,內(nèi)容如下:
Smarty 第一個Smarty頁面
用戶名:{{$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"); } }訪問地址 http://vkphp.dev/index/render2 ,即可看到渲染出的頁面。
源碼分享https://github.com/voidking/v...
書簽從零開始打造自己的PHP框架
使用命名空間:基礎
使用命名空間:后備全局函數(shù)/常量
smarty基礎安裝
smarty進階安裝
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/25856.html
摘要:前言第到章,我們完成了一個屬于自己的框架,麻雀雖小五臟俱全。接下來,我們使用框架開發(fā)一個迷你項目書簽收藏。內(nèi)包含框架的核心文件。源碼分享書簽從零開始打造自己的框架與之詳解 前言 第0到5章,我們完成了一個屬于自己的php框架,麻雀雖小五臟俱全。接下來,我們使用vkphp框架開發(fā)一個迷你項目——書簽收藏。在開發(fā)過程中,也許會遇到很多問題,這時候我們就可以對框架進行調(diào)整,使之更加完善。 系...
摘要:市場上已經(jīng)有了這么多好的框架,為什么還要開發(fā)自己的框架答假裝大神。為了在裝神的道路上走的更遠,小編決定開發(fā)一個自己的框架,命名為。源碼分享書簽從零開始打造自己的框架 前言 使用過thinkphp和yii,涉獵過shopnc。市場上已經(jīng)有了這么多好的框架,為什么還要開發(fā)自己的框架?答:假裝大神。為了在裝神的道路上走的更遠,小編決定開發(fā)一個自己的php框架,命名為vkphp。 原文地址:h...
摘要:本篇,我們就在自己的項目中使用來進行依賴管理。輸入,即可安裝依賴到目錄中,并且自動生成和。安裝依賴,提示從提示可以看出,讀取的是中的依賴,而不是最新的。訪問,正常工作。源碼分享書簽從零開始打造自己的框架中文網(wǎng)中文文檔 Composer Composer 是 PHP5.3以上 的一個依賴管理工具。它允許你申明項目所依賴的代碼庫,它會在你的項目中為你安裝他們。Composer 不是一個包管...
摘要:小結至此,整個框架已經(jīng)基本完成。接下來,我們會開發(fā)一個迷你項目,在開發(fā)的過程中,測試并改進我們的框架。源碼分享書簽從零開始打造自己的框架官方文檔中文文檔 目標 使用medoo插件來連接和操作數(shù)據(jù)庫。 原文鏈接:http://www.voidking.com/2017/... medoo基礎 安裝medoo 1、在composer中添加依賴: catfan/medoo: * 2、更新依賴...
摘要:內(nèi)包含框架的核心文件。在目錄中,新建,內(nèi)容如下判斷文件是否存在判斷配置是否存在沒有配置項找不到配置文件找不到配置文件配置類在目錄中,新建配置文件和。使用修改目錄中的和。源碼分享書簽從零開始打造自己的框架 目標 本篇,我們的目標有三個: 調(diào)整項目結構 加載配置類 添加日志類 原文地址:http://www.voidking.com/2017/... 調(diào)整項目結構 vkphp ├─ap...
閱讀 1102·2021-10-14 09:43
閱讀 1145·2021-10-11 11:07
閱讀 3112·2021-08-18 10:23
閱讀 1485·2019-08-29 16:18
閱讀 999·2019-08-28 18:21
閱讀 1474·2019-08-26 12:12
閱讀 3760·2019-08-26 10:11
閱讀 2502·2019-08-23 18:04