ThinkPHP5 ---基礎(chǔ)篇(URL和路由)
一、入口文件
i. 單入口文件:應用程序的所有http請求都由某一個文件接受并有這個文件轉(zhuǎn)發(fā)到功能代碼中 【public/index.php 傳入不同的參數(shù)跳轉(zhuǎn)到不同的控制器執(zhí)行不同的方法實現(xiàn)不同的功能】
ii. 優(yōu)勢:
只需要在入口文件做安全檢測 多入口文件多次檢測
在入口文件 過濾掉無效請求 多入口文件多次過濾
iii. public/index.php

iv. 如APP_PATH常量定義文件 thinkphp/base.php

v. 加載引導文件 thinkphp/start.php (安全檢測 處理無效請求等)
總結(jié):入口文件 可以改變系統(tǒng)默認配置(常量配置) 加載引導文件start.php
二、隱藏入口文件
i. 將項目根目錄設置為public下面 http://localhost訪問的是public/index.php
ii. 但是訪問其他模塊 需要http://localhost/index.php/admin/... 修改apache配置文件httpd.conf

打開擴展 LoadModule rewrite_module modules/mod_rewrite.so
<Directory "${INSTALL_DIR}/www/public"> 下 AllowOverride all
重啟apache
訪問其他模塊 就沒問題了 localhost/admin/...

iii. 此處 默認讀取了 在public/.htaccess 這個文件定義重寫規(guī)則

iv. 在apache修改上述配置后 讀取此文件
若此文件存在則啟用此規(guī)則 隱藏掉index.php入口文件 http://localhost/admin/index/demo
若此文件不存在 訪問的時候必須加上index.php http://localhost/index.php/admin/index/demo
三、入口文件的綁定
i. 概念:index.php默認訪問的是index模塊下index控制器的index方法
ii. public/index.php


iii. 方法一: 修改public/index.php
- //入口文件綁定 define('BIND_MODULE','admin') ; 此處綁定的是admin控制器 也可以admin/index 訪問的時候 localhost/index 直接到index控制器下的方法(用于比較簡單 模塊少 頁面少的網(wǎng)站)

- 新建admin模塊Index控制器index方法

- localhost測試

- 上述是綁定到了admin模塊 訪問admin下其他控制器 其他方法
a) index控制器下的demo方法

b) User控制器下的index方法

iv. 方法二: 如果當前網(wǎng)站需要給第三方提供數(shù)據(jù) 需要第三方通過接口只能訪問到特定的模塊 所以不希望第三方直接訪問到index.php 而是特定的入口文件 如api.php
- 新增public/api.php

- localhost/api.php 訪問 (默認訪問的也是index模塊下index控制器的index方法)

- 只希望通過api.php入口訪問特定的模塊 只能訪問api模塊


v. 方法三:自動綁定
- thinkphp/convention.php 下 'auto_bind_module' => false,

- 應用配置conf/config.php 開啟入口自動綁定模塊
'auto_bind_module' => true,

- 測試localhost | localhost/api.php | localhost/index/demo



- 總結(jié):自動綁定的是和入口文件名相同的模塊 (index.php ->index模塊 api.php->api模塊)
四、路由
i. 簡介:美化URL 簡化用戶的訪問
ii. 正常訪問 localhost/模塊名/控制器名/方法名
- admin模塊 User控制器 add方法

- 測試訪問localhost/admin/user/add/name/張三

- 訪問繁瑣 用路由簡化
a) 配置文件(thinkphp/convention.php )中開啟路由
'url_route_on' => true, 'url_route_must' => false,

b) 應用配置文件conf/config.php 增加配置
'url_route_on' => true ,'url_route_must' => false,

c) 新建路由文件conf/route.php

d) 分別測試訪問
localhost/news/張三|localhost/admin/user/add/name/張三


e) 修改add方法 url()函數(shù)獲取路徑


f) 目前如果訪問其他方法 還是可以訪問的

g) 讓所有的請求全部強使用路由 conf/config.php
'url_route_must' => true,

再次訪問http://localhost/admin/user/index 拒絕訪問
