MVC是一種先進的開發(fā)模式,能夠解決團隊開發(fā)之間協(xié)同配合的問題,使得網(wǎng)站各部件以更高的效率運行。MVC模式將網(wǎng)站分為3大部件,分別為模型、視圖、控制器。這3大部件各自分離,但又相互依存,最終形成了一個容易維護、容易擴展、高效運行的網(wǎng)站平臺。對于后臺程序員,借助于MVC模式就可以更加專注于功能的實現(xiàn),而不需要太多地涉及頁面與前端。這種分工協(xié)作的最終目的是提高開發(fā)效率及項目質(zhì)量。對于個人項目,也許在其他編程技術(例如Java、Python)中,MVC模式并沒有優(yōu)勢,但在PHP中,由于支持混合編程,所以使用MVC模式進行編程,能顯著提高工作效率。
《PHP MVC 開發(fā)實戰(zhàn)》是國內(nèi)本專門介紹PHP MVC開發(fā)模式的圖書,全書圍繞MVC實現(xiàn)思路進行細致的講解。通過MVC編程模式,以點帶面,全面深入探討PHP核心技術。同時,《PHP MVC 開發(fā)實戰(zhàn)》也是一本深入介紹利用PHP構建高性能網(wǎng)站的圖書,通過MVC的數(shù)據(jù)庫中間件,可以輕松實現(xiàn)網(wǎng)站群體、讀寫分離等高級應用,《PHP MVC 開發(fā)實戰(zhàn)》在此基礎上還會進一步介紹當前流行的NoSQL應用、全文搜索應用等。最后,作者通過一個自行編寫的MVC框架,引導讀者開發(fā)屬于自己的PHP MVC框架。
《PHP MVC 開發(fā)實戰(zhàn)》內(nèi)容通俗易懂、示例形象,適合廣大的Web從業(yè)人員閱讀。由于PHP非常簡單、易用,所以就算是未接觸過PHP的讀者或者初學者,只要掌握了基礎的面向對象編程思想就可以輕松上手。
前言
基礎篇
第1章 開發(fā)前準
1.1 PHP與MVC概述
1.2 開發(fā)環(huán)境搭建
1.2.1 在Windows下使用一鍵安裝包
1.2.2 在Linux平臺安裝LNMP
1.3 開發(fā)工具介紹
1.3.1 PHPCoder
1.3.2 PHPEditor
1.3.3 NetBeansIDE
1.3.4 EclipsePDT
1.3.5 ZendStudio
1.3.6 AdobeDreamweaver
1.3.7 VS.PHP
1.4 SVN版本控制
1.4.1 SVN介紹
1.4.2 SVN的安裝
1.4.3 TortoiseSVN的簡單使用
1.4.4 TortoiseSVN文件管理
1.4.5 SVN版本庫權限配置
1.5 小結
第2章 面向對象基礎
2.1 面向對象介紹
2.2 PHP面向對象基礎
2.2.1 class關鍵字
2.2.2 類中的成員
2.2.3 實例化類
2.3 類中的方法
2.3.1 方法的參數(shù)
2.3.2 方法的返回值
2.3.3 訪問修飾符
2.3.4 $this關鍵字
2.4 類的繼承
2.4.1 子類繼承父類
2.4.2 重寫父類中的成員屬性
2.4.3 final關鍵字
2.5 靜態(tài)類成員
2.5.1 static關鍵字
2.5.2 訪問靜態(tài)類成員(self::parent::)
2.5.3 類常量
2.6 小結
第3章 類的高級特性
3.1 類對象的克。╟lone)
3.2 類接口(interface)
3.2.1 接口的意義
3.2.2 定義接口
3.2.3 實現(xiàn)接口(implements)
3.3 抽象類與抽象方法
3.3.1 理解抽象概念
3.3.2 定義抽象類和方法(abstract)
3.3.3 使用抽象類
3.3.4 接口與抽象類的區(qū)別
3.4 類的異常
3.4.1 Exception類
3.4.2 使用try、catch、throw語句
3.5 小結
實戰(zhàn)篇
第4章 PHPMVC發(fā)展狀況
4.1 出身豪門的ZendFramework
4.1.1 ZendFramework簡介
4.1.2 安裝ZendFramework
4.1.3 使用ZendFramework實現(xiàn)MVC
4.1.4 ZendFramework核心組件
4.2 功能強大的Symfony
4.2.1 Symfony簡介
4.2.2 獲得Symfony
4.2.3 實現(xiàn)一個簡單的MVC
4.2.4 Symfony的配置文件
4.3 靈活完善的CakePHP
4.3.1 CakePHP簡介
4.3.2 下載安裝CakePHP
4.3.3 使用CakePHP構建MVC編程
4.3.4 好用的CakePHP視圖助手
4.4 使用廣泛的CodeIgniter
4.4.1 CodeIgniter簡介
4.4.2 安裝CodeIgniter
4.4.3 使用CodeIgniter實現(xiàn)MVC
4.5 高效便捷的ThinkPHP
4.5.1 ThinkPHP介紹
4.5.2 下載安裝ThinkPHP
4.5.3 使用ThinkPHP實現(xiàn)MVC
4.5.4 高效的ThinkPHP視圖引擎
4.6 小結
第5章 ThinkPHP開發(fā)入門
5.1 大道至簡、開發(fā)由我
5.1.1 入口文件
5.1.2 兩種創(chuàng)建項目的方式
5.1.3 模塊分組
5.2 ThinkPHP目錄
5.2.1 系統(tǒng)目錄
5.2.2 項目目錄
5.3 配置文件
5.3.1 選項配置
5.3.2 靜態(tài)緩存配置
5.3.3 路由配置
5.4 小結
第6章 ThinkPHP開發(fā)MVC應用
6.1 ThinkPHP中的URL
6.1.1 URL模式
6.1.2 URL路由
6.1.3 自動生成匹配的URL
6.1.4 實現(xiàn)文件偽靜態(tài)
6.2 模型(Model)
6.2.1 創(chuàng)建模型
6.2.2 實例化模型
6.2.3 模型初始化(_initialize())
6.3 控制器(Controller)
6.3.1 創(chuàng)建控制器
6.3.2 控制器中的動作(Action)
6.3.3 控制器的調(diào)用
6.3.4 項目空控制器與控制器空動作
6.3.5 動作的前后操作
6.4 視圖(View)
6.4.1 創(chuàng)建和使用視圖
6.4.2 系統(tǒng)變量與常量
6.4.3 在視圖中使用函數(shù)
6.4.4 數(shù)據(jù)循環(huán)
6.4.5 條件判斷
6.4.6 使用外部文件
6.4.7 導入標簽庫
6.4.8 使用布局
6.5 小結
第7章 ThinkPHP的數(shù)據(jù)庫操作
7.1 定義數(shù)據(jù)表模型
7.1.1 模型映射
7.1.2 自定義模型
7.1.3 create方法
7.1.4 模型屬性
7.2 基礎模型(Model)
7.2.1 連貫操作
7.2.2 CURD
7.2.3 查詢語言
7.2.4 使用原生的SQL語言
7.3 關聯(lián)模型(RelationModel)
7.3.1 關聯(lián)關系
7.3.2 關聯(lián)定義
7.3.3 關聯(lián)模型的CURD
7.4 高級模型(AdvModel)
7.4.1 定位查詢
7.4.2 動態(tài)查詢
7.4.3 內(nèi)容存文本
7.5 大數(shù)據(jù)支持
7.5.1 分布式數(shù)據(jù)庫
7.5.2 讀寫分離
7.5.3 數(shù)據(jù)表分區(qū)
7.6 小結
第8章 安全與調(diào)試
8.1 構建穩(wěn)健及安全的MVC
8.2 ThinkPHP內(nèi)置的安全機制
8.2.1 表單令牌
8.2.2 字段檢測
8.2.3 數(shù)據(jù)驗證
8.2.4 數(shù)據(jù)驗證碼
8.3 ThinkPHP安全日志機制
8.3.1 記錄方式
8.3.2 系統(tǒng)日志
8.3.3 應用日志
8.4 使用消息隊列機制
8.4.1 HTTPSQS基礎
8.4.2 安裝HTTPSQS
8.4.3 測試HTTPSQS
8.4.4 在MVC中使用HTTPSQS
8.5 ThinkPHP程序調(diào)試機制
8.5.1 開啟調(diào)試功能
8.5.2 代碼編譯概念
8.5.3 異常定制
8.5.4 性能調(diào)試
8.6 小結
第9章 ThinkPHP功能庫
9.1 數(shù)據(jù)處理
9.1.1 XML引擎
9.1.2 返回XML
9.1.3 返回Json
9.1.4 使用Json及Jsonp
9.2 ThinkPHP函數(shù)庫
9.2.1 快捷方法
9.2.2 基礎函數(shù)庫
9.2.3 擴展函數(shù)庫
9.3 ThinkPHP多語言支持
9.3.1 部署多語言
9.3.2 實現(xiàn)多語言
9.3.3 多語言與客戶端
9.4 客戶端
9.4.1 封裝的Session
9.4.2 封裝的Cookie
9.5 小結
第10章 網(wǎng)站靜態(tài)化
10.1 Cache類
10.1.1 緩存的方式
10.1.2 開啟緩存
10.1.3 安裝Memcached
10.1.4 使用Memcached
10.2 Memcached實戰(zhàn)應用
10.2.1 頁面局部緩存
10.2.2 緩存數(shù)據(jù)集
10.2.3 使用Memcache存放Session
10.3 使用Redis緩存
10.3.1 Redis的安裝
10.3.2 安裝Redis擴展
10.3.3 測試Redis
10.3.4 Redis緩存
10.4 靜態(tài)緩存
10.4.1 靜態(tài)緩存配置
10.4.2 靜態(tài)緩存規(guī)則
10.5 小結
第11章 ThinkPHP擴展
11.1 使用擴展
11.1.1 擴展的分類
11.1.2 模板引擎擴展
11.2 網(wǎng)絡操作
11.2.1 文件上傳
11.2.2 Nginx文件上傳進度
11.2.3 FTP文件上傳
11.2.4 下載文件
11.2.5 Socket套接字編程
11.2.6 定位當前位置
11.2.7 發(fā)送電子郵件
11.3 數(shù)據(jù)處理
11.3.1 數(shù)據(jù)加密
11.3.2 數(shù)據(jù)編碼轉換
11.3.3 數(shù)據(jù)分頁
11.3.4 日期數(shù)據(jù)
11.3.5 Input類
11.3.6 GD庫繪制圖形
11.4 行為擴展
11.4.1 行為概述
11.4.2 內(nèi)置行為擴展
11.4.3 自定義行為擴展
11.5 小結
第12章 SOAP分布式開發(fā)
12.1 分布式開發(fā)概念
12.1.1 SOA與SOAP
12.1.2 PHP5分布式開發(fā)
12.2 SOAP消息體
12.2.1 WSDL文件
12.2.2 定義根消息體definitions
12.2.3 type類型
12.2.4 portType端口類型
12.2.5 message消息列表
12.2.6 binding服務綁定描述
12.2.7 service服務描述
12.2.8 可視化創(chuàng)建WSDL
12.2.9 使用nusoap創(chuàng)建WSDL
12.2.1 0ThinkPHP生成SOAP服務
12.3 使用soapUI測試WSDL
12.3.1 soapUI簡介
12.3.2 安裝soapUI
12.3.3 創(chuàng)建項目
12.3.4 測試項目
12.3.5 負載測試
12.4 小結
第13章 整合Smarty模板引擎
13.1 Smarty模板引擎介紹
13.2 使用Smarty
13.2.1 在PHP中使用Smarty
13.2.2 開啟ThinkPHP模板擴展
13.2.3 以擴展的方式使用全功能Smarty
13.3 Smarty模板函數(shù)和標簽
13.3.1 include(包含文件)
13.3.2 capture(暫存數(shù)據(jù))
13.3.3 include_php(包含PHP文件)
13.3.4 insert(插入函數(shù))
13.3.5 literal(原文本輸出)
13.3.6 php(執(zhí)行PHP語句塊)
13.3.7 strip(保留空格和回車符)
13.4 Smarty模板控制語句
13.4.1 if、elseif(判斷語句)
13.4.2 foreach(循環(huán)數(shù)據(jù))
13.4.3 section(遍歷數(shù)組)
13.5 變量調(diào)節(jié)器
13.5.1 capitalize(首字母大寫)
13.5.2 count_characters(統(tǒng)計字符)
13.5.3 count_paragraphs(統(tǒng)計段落)
13.5.4 count_sentences(統(tǒng)計句數(shù))
13.5.5 count_words(統(tǒng)計單詞)
13.5.6 date_format(格式化日期)
13.5.7 escape(字符轉碼)
13.5.8 replace(字符替換)
13.5.9 regex_replace(正則替換)
13.5.1 0truncate(字符截。
13.6 視圖助手
13.6.1 html_image(生成圖像)
13.6.2 html_options(生成表單選擇組件)
13.6.3 html_radios(生成表單單選組件)
13.6.4 html_checkboxes(生成表單復選組件)
13.6.5 html_select_date(生成表單日期選擇組件)
13.6.6 html_select_time(生成表單時間選擇組件)
13.6.7 html_table(生成表格)
13.7 Smarty對象方法
13.7.1 display(顯示模板)
13.7.2 fetch(獲取輸出內(nèi)容)
13.7.3 configLoad(加載配置信息)
13.7.4 registerPlugin(注冊插件)
13.8 Smarty緩存
13.8.1 開啟緩存
13.8.2 局部緩存
13.9 小結
第14章 整合Coreseek全文搜索服務
14.1 全文索引概述
14.2 Coreseek基礎
14.2.1 Coreseek概述
14.2.2 在Windows下安裝Coreseek
14.2.3 在Linux下安裝Coreseek
14.3 Coreseek管理工具
14.3.1 indexer
14.3.2 searchd
14.3.3 search
14.4 創(chuàng)建索引
14.4.1 索引源分類
14.4.2 增量索引
14.4.3 實時索引
14.5 在MVC中搜索數(shù)據(jù)
14.5.1 安裝Sphinx擴展模塊
14.5.2 使用PHP接口
14.5.3 在MVC中搜索數(shù)據(jù)
14.5.4 實現(xiàn)關鍵詞高亮顯示
14.6 小結
第15章 使用MongoDB
15.1 MongoDB介紹
15.2 MongoDB的安裝
15.2.1 在Windows下安裝MongoDB
15.2.2 在Linux下安裝MongoDB
15.3 MongoDB的使用
15.3.1 理解MongoDB的數(shù)據(jù)結構
15.3.2 數(shù)據(jù)庫管理
15.3.3 文檔數(shù)據(jù)類型
15.3.4 插入數(shù)據(jù)
15.3.5 查詢數(shù)據(jù)
15.3.6 更新數(shù)據(jù)
15.3.7 刪除數(shù)據(jù)
15.4 條件操作
15.4.1 條件判斷語句
15.4.2 $all匹配全部
15.4.3 $exists檢查字段
15.4.4 null空值處理
15.4.5 $ne比較
15.4.6 $mod取模運算
15.4.7 $in、nin枚舉查詢
15.4.8 $or、$nor判斷查詢
15.4.9 $type映射查詢
15.4.1 0使用正則表達式匹配
15.4.1 1limit、skip限制查詢
15.4.1 2count查詢記錄條數(shù)
15.4.1 3sort查詢結果排序
15.5 性能優(yōu)化
15.5.1 使用索引
15.5.2 固定集合
15.5.3 GridFS
15.5.4 Profile優(yōu)化器
15.6 在MVC中使用MongoDB
15.6.1 安裝PHP擴展
15.6.2 開啟MongoDB用戶驗證
15.6.3 ThinkPHP操作MongoDB
15.7 小結
第16章 Redis實戰(zhàn)
16.1 Redis的使用
16.1.1 Redis概述
16.1.2 常用管理命令
16.1.3 Redis用戶驗證
16.2 Redis數(shù)據(jù)類型
16.2.1 String類型
16.2.2 Hash類型
16.2.3 List類型
16.2.4 Sets類型
16.2.5 Zset類型
16.2.6 使用phpRedisAdmin
16.3 Redis高級使用
16.3.1 數(shù)據(jù)持久化
16.3.2 虛擬內(nèi)存
16.3.3 事務處理
16.3.4 主從同步
16.4 在MVC中使用Redis
16.4.1 在PHP中使用Redis
16.4.2 在MVC中進行CURD操作
16.4.3 數(shù)據(jù)分頁
16.5 小結
項目篇
第17章 開發(fā)論壇系統(tǒng)
17.1 開發(fā)前準備
17.1.1 系統(tǒng)介紹
17.1.2 系統(tǒng)預覽
17.1.3 架構設計
17.1.4 系統(tǒng)部署
17.2 系統(tǒng)整體界面設計
17.2.1 布局方案
17.2.2 論壇首頁
17.2.3 論壇版塊
17.3 用戶模塊
17.3.1 用戶登錄
17.3.2 用戶注冊
17.3.3 使用微博賬號登錄
17.3.4 將現(xiàn)有賬號綁定到微博
17.4 發(fā)表帖子模塊
17.4.1 整合百度編輯器
17.4.2 上傳圖片
17.4.3 管理圖片
17.4.4 上傳附件
17.4.5 數(shù)據(jù)提交處理
17.5 帖子內(nèi)容模塊
17.5.1 帖子正文
17.5.2 回復列表
17.5.3 回復帖子
17.6 帖子管理模塊
17.6.1 刪除帖子
17.6.2 鎖定帖子
17.6.3 置頂帖子
17.6.4 推薦帖子
17.7 行為攔截器
17.7.1 統(tǒng)計瀏覽量
17.7.2 登記瀏覽位置
17.8 帖子搜索模塊
17.8.1 標題搜索
17.8.2 使用全文搜索
17.9 小結
第18章 開發(fā)自己的MVC框架
18.1 開發(fā)前準備
18.1.1 開發(fā)MVC框架的思路
18.1.2 文件結構
18.2 核心類庫
18.2.1 初始化
18.2.2 URL處理
18.3 控制器的開發(fā)
18.3.1 類自動載入
18.3.2 加載模板引擎(View)
18.3.3 處理消息(message)
18.4 模型的開發(fā)
18.4.1 使用PDO
18.4.2 模型實例化
18.4.3 實現(xiàn)連貫操作
18.4.4 讀取數(shù)據(jù)
18.4.5 插入數(shù)據(jù)
18.4.6 更新數(shù)據(jù)
18.4.7 刪除數(shù)據(jù)
18.5 擴展類庫
18.5.1 Session驅動擴展
18.5.2 緩存驅動擴展
18.6 測試MVC框架
18.6.1 創(chuàng)建項目
18.6.2 測試CURD
18.6.3 測試驅動
18.7 小結
附錄
附錄A 讓Nginx支持Pathinfo模式
附錄B 配置團隊開發(fā)環(huán)境