成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

從零開(kāi)始打造自己的PHP框架――第2章

daydream / 1323人閱讀

摘要:命名空間的作用解決重名問(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è)栗子:

下載安裝smarty

1、訪問(wèn)smarty官方下載 ,下載smarty,小編下載的是3.1.30版本。

2、在根目錄下新建lib,解壓smarty到lib目錄下,重命名文件夾為smarty。

使用smarty

1、在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

相關(guān)文章

  • 從零開(kāi)始打造自己PHP框架——6

    摘要:前言第到章,我們完成了一個(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)整,使之更加完善。 系...

    shusen 評(píng)論0 收藏0
  • 從零開(kāi)始打造自己PHP框架——0

    摘要:市場(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...

    妤鋒シ 評(píng)論0 收藏0
  • 從零開(kāi)始打造自己PHP框架——4

    摘要:本篇,我們就在自己的項(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è)包管...

    madthumb 評(píng)論0 收藏0
  • 從零開(kāi)始打造自己PHP框架——5

    摘要:小結(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、更新依賴...

    svtter 評(píng)論0 收藏0
  • 從零開(kāi)始打造自己PHP框架——3

    摘要:內(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...

    fengxiuping 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<