## 程序目錄結構
SpeedPHP框架的目錄結構比較簡單,秉承了SpeedPHP快速學習的理念。
新版的sp框架,由于加入了mudules開發模式,所以在目錄結構方面,趨于更精煉,更固定化。
> 3.1版及之前的sp框架,目錄結構是可以通過配置進行修改。
> 但是新版的情況不一樣了。
之所以我們要用固定的目錄結構,理由如下:
- 加入mudules開發模式,使得多個應用可以集成到一個程序里面,也就是傳統的模塊開發。所以已經不需要因為多應用共享類庫而需要改變目錄結構。
- 新的目錄結構更安全,但是如果能隨意修改結構,那么安全很難保證。
- 為了配合框架本身更精簡的理念,讓加載文件變得更少,更快速。
- “約定優于配置”的敏捷理念,讓團隊成員可以更容易理解各文件所在位置和意義,更容易上手和交接現有程序。
新的結構加入了protected目錄,意為“保護目錄”。除了入口文件(index.php)外,其他代碼文件(包括模板.html)都應該放在protected目錄下,以便統一保護起來,拒絕外部瀏覽訪問,杜絕安全問題。
> 在3.1版的框架程序的實踐中,經常有初學者頁面上直接用鏈接來訪問模板目錄(tpl/view目錄)下的.html文件,這是有安全隱患的。因為在模板目錄下的.html,雖然擴展名是html,但實際上已經算是可執行的php程序的一部分。通過瀏覽器訪問時,這些html文件可以被看到到源碼——也相當于php代碼被公開了。
> 臨時文件目錄tmp有時也會有一定的安全隱患,這是一個能被上傳文件的目錄。如果服務器沒有配置該目錄禁止執行php程序的權限,或者上傳的文件不經過嚴格的過濾,那么通過瀏覽器也可以執行這些危險的php程序。
新版的protected目錄自帶了apache服務器的.htaccess文件,可以保護當前目錄的訪問。如果您的服務器是nginx,可以在nginx配置內加入
location ^~ /protected {
deny all;
}
> .htaccess文件如果不生效,那么可能是apache配置問題。請自行搜索解決。
> nginx配置上面的目錄,如果是子目錄內,請根據實際情況修改。
#### 既定的目錄結構
**控制器目錄,protected/controller**
- 控制器目錄下應該全部都是控制器文件,如MainController.php.
- 控制器目錄下可以有下一級子目錄,每個子目錄代表一個modules模塊。
**框架目錄,protected/lib**
主要是框架主文件,speed.php文件。
> 對比3.1版框架,現在的sp框架已經精簡到一個文件內,以便更容易載入并且占用更少資源。
> 一個文件的框架在APC等opcode編譯緩存的環境下,有更良好的速度。
**臨時文件目錄,protected/tmp**
保存緩存文件、模板編譯文件、程序上傳臨時文件等的臨時文件目錄。
**模板目錄,protected/view**
模板頁面的存放目錄。
該目錄也可以有子目錄,子目錄通過display方法以view目錄作為根路徑方式載入。
**模型類庫目錄,protected/model**
該目錄可以存放數據模型類,也可以存放其他第三方類庫。
**類庫目錄,protected/include**
同model目錄,但載入優先級比model目錄要低。可以存放不太常用的第三方類庫。
> 默認情況下,include目錄需要用戶自己創建。
- 自述
- 一、入門教程
- 1. 開始使用SpeedPHP
- 2. Hello World
- 3. 理解MVC
- 4. 制作留言本
- 5. 數據操作及Ajax
- 二、框架概述
- 1. 特色
- 2. 版權及開源協議
- 3. 開發環境
- 4. 編碼版本
- 5. SAE平臺使用
- 三、開發指南
- 1. 開發流程
- 2. 架構及擴展
- 3. 程序目錄結構
- 4. 命名建議
- 5. 安全建議
- 6. 用戶自定義
- 7. 模塊modules
- 四、訪問交互
- 1. 表單提交及數據獲取
- 2. session/cookie的使用
- 3. 偽靜態及URL跳轉
- 4. 使用frameset
- 5. 模板引擎特性和使用方法
- 五、數據操作
- 1. 建立數據模型類
- 2. 數據操作教程
- 3. 分頁
- 4. SQL支持及關聯實現
- 5. 多數據庫、主從庫配置