国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 php手冊 淺談ThinkPHP3.2的子網(wǎng)域部署與路由最佳化(一)

淺談ThinkPHP3.2的子網(wǎng)域部署與路由最佳化(一)

Dec 05, 2016 pm 01:26 PM

前言:建立一個網(wǎng)站系統(tǒng),往往包含多個子網(wǎng)站,例如PC官網(wǎng),行動端官網(wǎng),後臺管理,資料源自一個相同的資料庫,整個架構(gòu)上,從ThinkPHP來看,可以大致理解為Model(M)是一樣的,Controller(C)包含共用API部分和不共用部分,View則是完全不共用的,這裡在整個初始架構(gòu)的時候,我們可以主要從以下幾個方面去考慮:

設(shè)定共用的資料庫、擴充Application裡面的模組、自訂檢視資料夾、子網(wǎng)域部署、路由簡化....

具體操作如下:

1、準備ThinkPHP環(huán)境、資料庫

??? a、下載官網(wǎng)ThinkPHP3.2完整版原始碼,解壓縮命名為testWeb放置到www目錄下,訪問http://192.168.1.122/testWeb/,可以看到:

???? 說明部署沒問題的。

???? b、準備一個測試的資料庫books,新book表(id,title,price),準備測試資料;

????

???? c、設(shè)定資料庫,請參考ThinkPHP設(shè)定載入規(guī)則,可採用慣例設(shè)定(ThinkPHP/Conf/convention.php),結(jié)合應(yīng)用程式設(shè)定(Application/Common/Conf/config.php)、模組設(shè)定(Application/目前模組名稱/ Conf/config.php),

???????? 這裡我採用的是資料庫配置在應(yīng)用程式設(shè)定上:

<span style="color: #008080"> 1</span>     <span style="color: #008000">//</span><span style="color: #008000">數(shù)據(jù)庫配置信息</span>
<span style="color: #008080"> 2</span>     'DB_TYPE'   => 'mysql', <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫類型</span>
<span style="color: #008080"> 3</span>     'DB_HOST'   => 'localhost', <span style="color: #008000">//</span><span style="color: #008000"> 服務(wù)器地址localhost</span>
<span style="color: #008080"> 4</span>     'DB_NAME'   => 'books', <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫名</span>
<span style="color: #008080"> 5</span>     'DB_USER'   => 'root', <span style="color: #008000">//</span><span style="color: #008000"> 用戶名</span>
<span style="color: #008080"> 6</span>     'DB_PWD'    => '', <span style="color: #008000">//</span><span style="color: #008000"> 密碼</span>
<span style="color: #008080"> 7</span>     'DB_PORT'   => 3306, <span style="color: #008000">//</span><span style="color: #008000"> 端口</span>
<span style="color: #008080"> 8</span>     'DB_PREFIX' => '', <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫表前綴</span>
<span style="color: #008080"> 9</span>     'DB_CHARSET'=> 'utf8', <span style="color: #008000">//</span><span style="color: #008000"> 字符集</span>
<span style="color: #008080">10</span>     'DB_DEBUG'  =>  <span style="color: #0000ff">TRUE</span>, <span style="color: #008000">//</span><span style="color: #008000"> 數(shù)據(jù)庫調(diào)試模式 開啟后可以記錄SQL日志 3.2.3新增<br></span>

??????? 接著,在預(yù)設(shè)Index控制器裡面,增加一個操作(action):

<span style="color: #008080">1</span>     <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span> get_book(<span style="color: #800080">$id</span><span style="color: #000000">){
</span><span style="color: #008080">2</span>         <span style="color: #800080">$param</span>['id'] = I('get.id'<span style="color: #000000">);
</span><span style="color: #008080">3</span>         <span style="color: #800080">$model</span> = M('book')->where(<span style="color: #800080">$param</span>)-><span style="color: #000000">find();
</span><span style="color: #008080">4</span>         <span style="color: #800080">$this</span>->ajaxReturn(<span style="color: #800080">$model</span><span style="color: #000000">);
</span><span style="color: #008080">5</span>     }

    訪問:http://192.168.1.122/testWeb/index.php/Home/Index/get_book?id=1,就可以去到j(luò)son數(shù)據(jù),說明到此為止

??????????

2、擴充Application應(yīng)用程式目錄裡面的模組

???? a、快速拷貝目前的Home模組,並重新命名為H5模組並修改對應(yīng)控制器裡面的名空間為:namespace H5Controller,

???? 存取:http://192.168.1.122/testWeb/index.php/

H5/Index/get_book?id=1,這時成功回傳數(shù)據(jù),說明目前H5模組是可以的;同理我們可以複

???? 制一個Admin模組。

3、自訂視圖資料夾

?????a、視圖概念:ThinkPHP是基於MVC結(jié)構(gòu)設(shè)計的一種PHP框架,如果是簡單的資料庫操作,往往可以省略模組裡面的Model,僅使用Controller就可以完成CURD操作,而視圖也是其中一個很重要的功能。 ThinkPHP中的視圖主要指模板文件和模板引擎:模板文件可以簡單理解為構(gòu)建積木玩具中的基本“小原件”,這“小原件”可能是不同形狀,每種形狀的“小原件”可能在搭建的過程中使用了一個或多個;模板引擎,則是搭建積木玩具中的「凹凸」卡扣,形成一種規(guī)則將「小原件」組合起來。

????? b、檢視使用:新增Home模組-Index控制器-book作業(yè)來取得所有書籍,並在Home模組的View資料夾下,新建Index資料夾-新book.html

<span style="color: #008080">1</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">function</span><span style="color: #000000"> book(){
</span><span style="color: #008080">2</span>     <span style="color: #800080">$models</span> = M('book')-><span style="color: #000000">select();
</span><span style="color: #008080">3</span>     <span style="color: #800080">$this</span>->assign('books',<span style="color: #800080">$models</span><span style="color: #000000">);
</span><span style="color: #008080">4</span>     <span style="color: #800080">$this</span>-><span style="color: #000000">display();
</span><span style="color: #008080">5</span> }
?????? 範本檔案:

<span style="color: #008080">1</span> <span style="color: #0000ff"><</span><span style="color: #800000">body</span><span style="color: #0000ff">></span>
<span style="color: #008080">2</span>     <span style="color: #0000ff"><</span><span style="color: #800000">volist </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="books"</span><span style="color: #ff0000"> id</span><span style="color: #0000ff">="vo"</span><span style="color: #0000ff">></span>
<span style="color: #008080">3</span>         <span style="color: #0000ff"><</span><span style="color: #800000">p</span><span style="color: #0000ff">></span>序號:{$vo.id}<span style="color: #0000ff"></</span><span style="color: #800000">p</span><span style="color: #0000ff">></span>
<span style="color: #008080">4</span>         <span style="color: #0000ff"><</span><span style="color: #800000">p</span><span style="color: #0000ff">></span>書名:{$vo.title}<span style="color: #0000ff"></</span><span style="color: #800000">p</span><span style="color: #0000ff">></span>
<span style="color: #008080">5</span>         <span style="color: #0000ff"><</span><span style="color: #800000">p </span><span style="color: #ff0000">style</span><span style="color: #0000ff">="color: #FF0000"</span><span style="color: #0000ff">></span>價格:{$vo.price}<span style="color: #0000ff"></</span><span style="color: #800000">p</span><span style="color: #0000ff">></span>
<span style="color: #008080">6</span>     <span style="color: #0000ff"></</span><span style="color: #800000">volist</span><span style="color: #0000ff">></span>
<span style="color: #008080">7</span> <span style="color: #0000ff"></</span><span style="color: #800000">body</span><span style="color: #0000ff">></span>

????? c、 訪問:http://192.168.1.122/testWeb/index.php/Home/Index/book,此時可以看到頁面:

?????? 此時,說明這個視圖使用是正確的,但是同時也有一些不好的地方,如果模板文件多起來的時候,就不利于模板修改編輯(目錄層次太深了),可以在模塊配置中,定義當前模塊默認的視圖目錄(Application/Home/Conf/config.php):

<span class="hljs-string"><span class="hljs-string"> <span class="cnblogs_code"><span style="color: #008080">define</span>('TMPL_PATH','./Public/PC/'); </span><br></span></span>

類似定義H5、admin模塊的視圖目錄,最終得到的目錄組織,到此,就可以大概有幾個不同的子網(wǎng)站的初步架構(gòu)了。而對于網(wǎng)站的分類:二級菜單、三級菜單就可以分別對應(yīng)控制器(Controller)和操作(action),根據(jù)視圖模板構(gòu)造動態(tài)的頁面:

4、子域名部署,關(guān)于子域名的解析可以參考我之前的文章網(wǎng)站部署一級域名、二級域名、子域名

a、主要修改一些相關(guān)配置:

<span style="color: #008080"> 1</span> <span style="color: #0000ff"><</span><span style="color: #800000">VirtualHost </span><span style="color: #ff0000">*:80</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 2</span> <span style="color: #000000">    DocumentRoot "E:/wamp/www/testWeb/"
</span><span style="color: #008080"> 3</span> <span style="color: #000000">    ServerName  chqtest.com
</span><span style="color: #008080"> 4</span> <span style="color: #000000">    ServerAlias m.chqtest.com
</span><span style="color: #008080"> 5</span>     <span style="color: #0000ff"><</span><span style="color: #800000">Directory </span><span style="color: #ff0000">"E:/wamp/www/testWeb/"</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 6</span> <span style="color: #000000">    Allow from all      
</span><span style="color: #008080"> 7</span>     <span style="color: #0000ff"></</span><span style="color: #800000">Directory</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 8</span>     <span style="color: #0000ff"><</span><span style="color: #800000">IfModule </span><span style="color: #ff0000">dir_module</span><span style="color: #0000ff">></span>
<span style="color: #008080"> 9</span> <span style="color: #000000">       DirectoryIndex  mobile.php index.html index.htm default.php default.htm default.html
</span><span style="color: #008080">10</span>     <span style="color: #0000ff"></</span><span style="color: #800000">IfModule</span><span style="color: #0000ff">></span>
<span style="color: #008080">11</span> <span style="color: #0000ff"></</span><span style="color: #800000">VirtualHost</span><span style="color: #0000ff">></span>
<span style="color: #008080">12</span> 
<span style="color: #008080">13</span> <span style="color: #0000ff"><</span><span style="color: #800000">VirtualHost </span><span style="color: #ff0000">*:80</span><span style="color: #0000ff">></span>
<span style="color: #008080">14</span> <span style="color: #000000">    DocumentRoot "E:/wamp/www/testWeb/"
</span><span style="color: #008080">15</span> <span style="color: #000000">    ServerName  chqtest.com
</span><span style="color: #008080">16</span> <span style="color: #000000">    ServerAlias www.chqtest.com
</span><span style="color: #008080">17</span>     <span style="color: #0000ff"><</span><span style="color: #800000">Directory </span><span style="color: #ff0000">"E:/wamp/www/testWeb/"</span><span style="color: #0000ff">></span>
<span style="color: #008080">18</span> <span style="color: #000000">    Allow from all      
</span><span style="color: #008080">19</span>     <span style="color: #0000ff"></</span><span style="color: #800000">Directory</span><span style="color: #0000ff">></span>
<span style="color: #008080">20</span>     <span style="color: #0000ff"><</span><span style="color: #800000">IfModule </span><span style="color: #ff0000">dir_module</span><span style="color: #0000ff">></span>
<span style="color: #008080">21</span> <span style="color: #000000">       DirectoryIndex  index.php index.html index.htm default.php default.htm default.html
</span><span style="color: #008080">22</span>     <span style="color: #0000ff"></</span><span style="color: #800000">IfModule</span><span style="color: #0000ff">></span>
<span style="color: #008080">23</span> <span style="color: #0000ff"></</span><span style="color: #800000">VirtualHost</span><span style="color: #0000ff">></span>
<span style="color: #008080">24</span> 
<span style="color: #008080">25</span> <span style="color: #0000ff"><</span><span style="color: #800000">VirtualHost </span><span style="color: #ff0000">*:80</span><span style="color: #0000ff">></span>
<span style="color: #008080">26</span> <span style="color: #000000">    DocumentRoot "E:/wamp/www/testWeb/"
</span><span style="color: #008080">27</span> <span style="color: #000000">    ServerName  chqtest.com
</span><span style="color: #008080">28</span> <span style="color: #000000">    ServerAlias admin.chqtest.com
</span><span style="color: #008080">29</span>     <span style="color: #0000ff"><</span><span style="color: #800000">Directory </span><span style="color: #ff0000">"E:/wamp/www/testWeb/"</span><span style="color: #0000ff">></span>
<span style="color: #008080">30</span> <span style="color: #000000">    Allow from all      
</span><span style="color: #008080">31</span>     <span style="color: #0000ff"></</span><span style="color: #800000">Directory</span><span style="color: #0000ff">></span>
<span style="color: #008080">32</span>     <span style="color: #0000ff"><</span><span style="color: #800000">IfModule </span><span style="color: #ff0000">dir_module</span><span style="color: #0000ff">></span>
<span style="color: #008080">33</span> <span style="color: #000000">       DirectoryIndex  index.php index.html index.htm default.php default.htm default.html
</span><span style="color: #008080">34</span>     <span style="color: #0000ff"></</span><span style="color: #800000">IfModule</span><span style="color: #0000ff">></span>
<span style="color: #008080">35</span> <span style="color: #0000ff"></</span><span style="color: #800000">VirtualHost</span><span style="color: #0000ff">></span>

此時,也就是說,有不同子域名(二級網(wǎng)站別名)www.chqtest.com m.chqtest.com admin.chqtest.com都可以直接訪問到www/testWeb目錄下,如http://www.chqtest.com/index.php/Home/Index/book,

http://m.chqtest.com/index.php/Home/Index/book都是一樣的,只是訪問到Home模塊下的書籍頁面(改Home為H5也都指向手機端頁面);

b、那么如果要根據(jù)不同的子域名,直接綁定到不同的模塊怎么辦?參考ThinkPHP的域名部署,也就是在慣用配置下補充一些信息:

<span style="color: #008080"> 1</span>     'APP_SUB_DOMAIN_DEPLOY' =>  <span style="color: #0000ff">true</span>,   <span style="color: #008000">//</span><span style="color: #008000"> 是否開啟子域名部署
</span><span style="color: #008080"> 2</span> <span style="color: #008000">    //完整域名部署</span>
<span style="color: #008080"> 3</span>     'APP_SUB_DOMAIN_RULES'    =>    <span style="color: #0000ff">array</span>( <span style="color: #008000">//</span><span style="color: #008000"> 子域名部署規(guī)則</span>
<span style="color: #008080"> 4</span>         'www.chqtest.com'  => 'Home',   <span style="color: #008000">//</span><span style="color: #008000"> www.chqtest.com域名指向Home模塊</span>
<span style="color: #008080"> 5</span>         'm.chqtest.com'   => 'H5',
<span style="color: #008080"> 6</span>         'admin.chqtest.com' => 'Admin',
<span style="color: #008080"> 7</span>     ),
<span style="color: #008080"> 8</span>     'APP_DOMAIN_SUFFIX'     =>  '', <span style="color: #008000">//</span><span style="color: #008000"> 域名后綴 如果是com.cn net.cn 之類的后綴必須設(shè)置    </span>
<span style="color: #008080"> 9</span>     'ACTION_SUFFIX'         =>  '', <span style="color: #008000">//</span><span style="color: #008000"> 操作方法后綴</span>
<span style="color: #008080">10</span>     'MULTI_MODULE'          =>  <span style="color: #0000ff">true</span>, <span style="color: #008000">//</span><span style="color: #008000"> 是否允許多模塊 如果為false 則必須設(shè)置 DEFAULT_MODULE</span>
<span style="color: #008080">11</span>     'MODULE_DENY_LIST'      =>  <span style="color: #0000ff">array</span>('Common','Runtime'),
<span style="color: #008080">12</span>     'MODULE_ALLOW_LIST'    =>    <span style="color: #0000ff">array</span>('Home','H5','Admin'), <span style="color: #008000">//</span><span style="color: #008000"> 允許訪問的模塊列表</span>

???????????? 再次訪問http://www.chqtest.com/index.php/Home/Index/book,http://m.chqtest.com/index.php/Home/Index/book,會發(fā)現(xiàn)有以下錯誤:

??? 這是因為綁定子域名部署之后,index.php入口文件定位到Application應(yīng)用目錄之前,就已經(jīng)根據(jù)不同的子域名,直接進入相應(yīng)的目錄里面了,這時Home就會被判斷要查找的控制器,顯然當前控制器只有Index,所以,重新訪問:http://www.chqtest.com/index.php/Index/book,http://m.chqtest.com/index.php/Index/book,http://admin.chqtest.com/index.php/Index/book,是不是就都分別訪問到相應(yīng)模塊下的操作并返回視圖呢:

??????????

???? 這時,基本就可以搭建了一個大體的網(wǎng)站架構(gòu)就進一步完善了些,從http://192.168.1.122/testWeb/index.php/H5/Index/book訪問手機端書籍頁面,到http://m.chqtest.com/index.php/Index/book是不是可以省略了一級資源目錄和模塊名了呢,

???? 整個結(jié)構(gòu)也清晰了很多。下一篇,將繼續(xù)說說ThinkPHP關(guān)于路由優(yōu)化,PC、H5網(wǎng)站相互切換的技巧,有興趣的可以留意下,關(guān)于這次例子可以參考Demo

?

????

?

?

?

?

?

????????

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)