ThinkPHP3.2 のサブドメイン展開(kāi)とルーティング最適化に関する簡(jiǎn)単な説明 (1)
Dec 05, 2016 pm 01:26 PM前書き: Web サイト システムの構(gòu)築には、PC 公式 Web サイト、モバイル 公式 Web サイト、バックエンド管理などの複數(shù)のサブ Web サイトが含まれることがよくあります。データは、ThinkPHP の観點(diǎn)から、アーキテクチャ全體を大まかに理解できます。 Model(M) と同様です。コントローラー (C) には共有 API 部分と非共有部分が含まれていますが、ビューは初期アーキテクチャ全體で主に次の點(diǎn)を考慮できます。
共有データベースの構(gòu)成、アプリケーションのモジュールの拡張、ビューフォルダーのカスタマイズ、サブドメインの展開(kāi)、ルーティングの簡(jiǎn)素化....
具體的な操作は以下の通りです:
1. ThinkPHP 環(huán)境とデータベースを準(zhǔn)備します
a. 公式 Web サイトから完全バージョンの ThinkPHP3.2 ソース コードをダウンロードし、解凍して testWeb という名前を付け、www ディレクトリに配置すると、次の內(nèi)容が表示されます。展開(kāi)に問(wèn)題がないということです。
b. テスト データベース書籍を準(zhǔn)備し、新しい書籍テーブル (ID、タイトル、価格) を作成し、テスト データを準(zhǔn)備します。
c. データベースを設(shè)定します。ThinkPHP 設(shè)定読み込みルールを參照して、従來(lái)の設(shè)定 (ThinkPHP/Conf/convention.php) をアプリケーション設(shè)定 (Application/Common/Conf/config.php) と組み合わせて使用??できます。 (アプリケーション/現(xiàn)在のモジュール名/Conf/config.php),
applicationアプリケーション構(gòu)成にデータベース構(gòu)成を使用します。
次に、デフォルトの Index コントローラーにアクションを追加します。
リーリー
Home
/Index/get_book?id=1 にアクセスすると、これまでのところデータベース接続とアクセスが正常であることを示す json データに移動(dòng)できます。2. アプリケーションディレクトリ內(nèi)のモジュールを展開(kāi)します
a. 現(xiàn)在のホーム モジュールをすばやくコピーし、名前を H5 モジュールに変更し、対応するコントローラーの名前空間を次のように変更します: namespace H5Controller,
にアクセスしてください: http://192.168.1.122/testWeb/index.php/
/Index/get_book?id=1。この時(shí)點(diǎn)では、現(xiàn)在の H5 モジュールが正常であることを示しています。復(fù)元できます 管理モジュールを作成します。
3. カスタマイズされたビューフォルダー
a. 概念の表示: ThinkPHP は MVC 構(gòu)造に基づいて設(shè)計(jì)された PHP フレームワークであり、単純なデータベース操作であれば、モジュール內(nèi)のモデルを省略でき、コントローラーのみを使用して CURD 操作を完了できます。眺めも重要な特徴の一つです。 ThinkPHP のビューは、主にテンプレート ファイルとテンプレート エンジンを指します。テンプレート ファイルは、単純に、積み木おもちゃを組み立てる際の基本的な「小さなオリジナル」として理解できます。これらの「小さなオリジナル」は、さまざまな形狀を持つ場(chǎng)合があり、それぞれの「小さなオリジナル」です。形狀は積み木を組み立てる際に使用される場(chǎng)合があり、テンプレート エンジンは積み木玩具の「凹凸」バックルを構(gòu)築し、「小さなオリジナル」を組み合わせるルールを形成します。
b. 使用方法の表示: ホーム モジュール-インデックス コントローラー-ブック操作を追加してすべてのブックを取得し、ホーム モジュールのビュー フォルダーの下に新しいインデックス フォルダー-new book.html を作成します リーリー
テンプレートファイル: リーリー
????? c、 訪問(wèn):http://192.168.1.122/testWeb/index.php/Home/Index/book,此時(shí)可以看到頁(yè)面:
?????? 此時(shí),說(shuō)明這個(gè)視圖使用是正確的,但是同時(shí)也有一些不好的地方,如果模板文件多起來(lái)的時(shí)候,就不利于模板修改編輯(目錄層次太深了),可以在模塊配置中,定義當(dāng)前模塊默認(rèn)的視圖目錄(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模塊的視圖目錄,最終得到的目錄組織,到此,就可以大概有幾個(gè)不同的子網(wǎng)站的初步架構(gòu)了。而對(duì)于網(wǎng)站的分類:二級(jí)菜單、三級(jí)菜單就可以分別對(duì)應(yīng)控制器(Controller)和操作(action),根據(jù)視圖模板構(gòu)造動(dòng)態(tài)的頁(yè)面:
4、子域名部署,關(guān)于子域名的解析可以參考我之前的文章網(wǎng)站部署一級(jí)域名、二級(jí)域名、子域名
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>
此時(shí),也就是說(shuō),有不同子域名(二級(jí)網(wǎng)站別名)www.chqtest.com m.chqtest.com admin.chqtest.com都可以直接訪問(wèn)到www/testWeb目錄下,如http://www.chqtest.com/index.php/Home/Index/book,
http://m.chqtest.com/index.php/Home/Index/book都是一樣的,只是訪問(wèn)到Home模塊下的書籍頁(yè)面(改Home為H5也都指向手機(jī)端頁(yè)面);
b、那么如果要根據(jù)不同的子域名,直接綁定到不同的模塊怎么辦?參考ThinkPHP的域名部署,也就是在慣用配置下補(bǔ)充一些信息:
<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"> 是否開(kāi)啟子域名部署 </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"> 允許訪問(wèn)的模塊列表</span>
???????????? 再次訪問(wèn)http://www.chqtest.com/index.php/Home/Index/book,http://m.chqtest.com/index.php/Home/Index/book,會(huì)發(fā)現(xiàn)有以下錯(cuò)誤:
??? 這是因?yàn)榻壎ㄗ佑蛎渴鹬?,index.php入口文件定位到Application應(yīng)用目錄之前,就已經(jīng)根據(jù)不同的子域名,直接進(jìn)入相應(yīng)的目錄里面了,這時(shí)Home就會(huì)被判斷要查找的控制器,顯然當(dāng)前控制器只有Index,所以,重新訪問(wèn):http://www.chqtest.com/index.php/Index/book,http://m.chqtest.com/index.php/Index/book,http://admin.chqtest.com/index.php/Index/book,是不是就都分別訪問(wèn)到相應(yīng)模塊下的操作并返回視圖呢:
??????????
???? 這時(shí),基本就可以搭建了一個(gè)大體的網(wǎng)站架構(gòu)就進(jìn)一步完善了些,從http://192.168.1.122/testWeb/index.php/H5/Index/book訪問(wèn)手機(jī)端書籍頁(yè)面,到http://m.chqtest.com/index.php/Index/book是不是可以省略了一級(jí)資源目錄和模塊名了呢,
???? 整個(gè)結(jié)構(gòu)也清晰了很多。下一篇,將繼續(xù)說(shuō)說(shuō)ThinkPHP關(guān)于路由優(yōu)化,PC、H5網(wǎng)站相互切換的技巧,有興趣的可以留意下,關(guān)于這次例子可以參考Demo
?
????
?
?
?
?
?
????????

ホットAIツール

Undress AI Tool
脫衣畫像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover
寫真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)