深入PHP 面向對象 模式與實踐 第5版 ( 簡體 字) |
作者:[英] 馬特·贊德斯徹(Matt Zandstra) | 類別:1. -> 程式設計 -> 網路編程 -> PHP |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 51328 詢問書籍請說出此書號!【缺書】 NT售價: 645 元 |
出版日:6/1/2019 |
頁數:508 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115512338 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書是PHP經典圖書升級版,它既是一本關于面向對象設計與編程的書,也是一本關于如何使用工具管理PHP代碼(從協作到部署)的書。書中講解了PHP的新特性,例如匿名類以及標量參數提示和返回值類型。第5版重寫了Composer和Packagist庫的相關內容,并增加了關于Git版本控制的篇幅。示例代碼全面更新,符合PSR-1和PSR-2標準。閱讀本書能夠幫你構建實現既定目標且易于協同開發的系統,并讓你的代碼優雅、簡潔且易于理解。 |
目錄:第 一部分 對象 第 1章 PHP:設計和管理 2 1.1 問題 2 1.2 PHP與其他語言 3 1.3 關于本書 5 1.3.1 對象 5 1.3.2 模式 6 1.3.3 實踐 6 1.3.4 第5版新增內容 7 1.4 小結 8 第 2章 PHP和對象 9 2.1 PHP對象的偶然成功 9 2.1.1 起源:PHP/FI 9 2.1.2 語法糖:PHP 3 9 2.1.3 一場靜悄悄的革命:PHP 4 10 2.1.4 擁抱變化:PHP 5 11 2.1.5 迎頭追趕:PHP 7 12 2.2 擁護和顧慮:關于對象的爭辯 12 2.3 小結 13 第3章 對象基礎 14 3.1 類和對象 14 3.1.1 第 一個類 14 3.1.2 一個(或兩個)對象 15 3.2 設置類中的屬性 16 3.3 使用方法 18 3.4 參數和類型 21 3.4.1 基本類型 21 3.4.2 接受提示:對象類型 24 3.5 繼承 28 3.5.1 繼承問題 28 3.5.2 使用繼承 33 3.5.3 public、private和protected:管理類的訪問 38 3.6 小結 43 第4章 高級特性 44 4.1 靜態方法和屬性 44 4.2 常量屬性 47 4.3 抽象類 48 4.4 接口 50 4.5 trait 52 4.5.1 trait可以解決的問題 52 4.5.2 定義和使用trait 53 4.5.3 使用多個trait 54 4.5.4 組合使用trait與接口 55 4.5.5 通過insteadof管理方法名沖突 56 4.5.6 使用別名重寫trait的方法 57 4.5.7 在trait中使用靜態方法. 58 4.5.8 訪問宿主類的屬性 59 4.5.9 在trait中定義抽象方法 59 4.5.10 改變trait中方法的訪問權限 60 4.6 延遲靜態綁定:static關鍵字 61 4.7 錯誤處理 65 4.8 final類和方法 73 4.9 內部錯誤類 74 4.10 使用攔截器 75 4.11 定義析構方法 81 4.12 使用__clone()復制對象 82 4.13 定義對象的字符串值 85 4.14 回調、匿名函數和閉包 86 4.15 匿名類 90 4.16 小結 92 第5章 對象工具 93 5.1 PHP和包 93 5.1.1 PHP包和命名空間 93 5.1.2 自動加載 101 5.2 類函數和對象函數 105 5.2.1 查找類 106 5.2.2 檢查對象或類 106 5.2.3 得到指向類的完全限定的字符串引用 107 5.2.4 檢查方法 108 5.2.5 檢查類屬性 110 5.2.6 檢查繼承 110 5.2.7 方法調用 111 5.3 反射API 112 5.3.1 入門 112 5.3.2 是時候大干一場了 113 5.3.3 檢查類 115 5.3.4 檢查方法 117 5.3.5 檢查方法參數 118 5.3.6 使用反射API 120 5.4 小結 123 第6章 對象與設計 124 6.1 定義代碼設計 124 6.2 面向對象編程與面向過程編程 125 6.2.1 職責 129 6.2.2 內聚 129 6.2.3 耦合 129 6.2.4 正交 129 6.3 選擇類 130 6.4 多態 131 6.5 封裝 132 6.6 忘記細節 133 6.7 四個方向標 133 6.7.1 代碼重復 134 6.7.2 類知道太多 134 6.7.3 萬能的類 134 6.7.4 條件語句 134 6.8 UML 134 6.8.1 類圖 135 6.8.2 序列圖 140 6.9 小結 142 第二部分 模式 第7章 什么是設計模式,為什么要使用設計模式 144 7.1 什么是設計模式 144 7.2 設計模式概要 146 7.2.1 名稱 146 7.2.2 問題 146 7.2.3 解決方案 147 7.2.4 效果 147 7.3 《設計模式》的格式 147 7.4 為什么使用設計模式 148 7.4.1 設計模式定義了問題 148 7.4.2 設計模式定義了解決方案 148 7.4.3 設計模式與編程語言無關 148 7.4.4 模式定義了一組詞匯 148 7.4.5 模式是經過測試的 149 7.4.6 模式為協作而設計 149 7.4.7 設計模式促進優秀設計 149 7.4.8 流行的框架都使用了設計模式 150 7.5 PHP與設計模式 150 7.6 小結 150 第8章 一些模式原則 151 8.1 模式的啟示 151 8.2 組合與繼承 152 8.2.1 問題 152 8.2.2 使用組合 155 8.3 解耦 157 8.3.1 問題 157 8.3.2 解耦 159 8.4 針對接口編程,而不是針對實現編程 161 8.5 概念在變化 162 8.6 不要盲從模式 162 8.7 模式 163 8.7.1 用于生成對象的模式 163 8.7.2 用于組織對象和類的模式 163 8.7.3 面向任務的模式 163 8.7.4 企業設計模式 163 8.7.5 數據庫模式 163 8.8 小結 163 第9章 生成對象 164 9.1 生成對象的問題和解決方案 164 9.2 單例模式 168 9.2.1 問題 169 9.2.2 實現 169 9.2.3 效果 171 9.3 工廠方法模式 172 9.3.1 問題 172 9.3.2 實現 175 9.3.3 效果 177 9.4 抽象工廠模式 177 9.4.1 問題 177 9.4.2 實現 178 9.4.3 效果 180 9.5 原型模式 181 9.5.1 問題 182 9.5.2 實現 183 9.6 推向邊緣:服務定位器 186 9.7 完全隔離:依賴注入 187 9.7.1 問題 187 9.7.2 實現 188 9.7.3 效果 191 9.8 小結 191 第 10章 使面向對象編程更加靈活的模式 192 10.1 構造可靈活創建對象的類 192 10.2 組合模式 192 10.2.1 問題 193 10.2.2 實現 195 10.2.3 效果 199 10.2.4 組合模式小結 202 10.3 裝飾器模式 202 10.3.1 問題 202 10.3.2 實現 205 10.3.3 效果 209 10.4 外觀模式 209 10.4.1 問題 209 10.4.2 實現 211 10.4.3 效果 211 10.5 小結 212 第 11章 執行及描述任務 213 11.1 解釋器模式 213 11.1.1 問題 213 11.1.2 實現 214 11.1.3 解釋器模式的問題 222 11.2 策略模式 222 11.2.1 問題 222 11.2.2 實現 223 11.3 觀察者模式 227 11.4 訪問者模式 235 11.4.1 問題 235 11.4.2 實現 236 11.4.3 訪問者模式的問題 241 11.5 命令模式 242 11.5.1 問題 242 11.5.2 實現 242 11.6 空對象模式 247 11.6.1 問題 247 11.6.2 實現 249 11.7 小結 251 第 12章 企業設計模式 252 12.1 架構概述 252 12.1.1 模式 252 12.1.2 應用與分層 253 12.2 企業架構外的基礎模式 255 12.2.1 注冊表 255 12.2.2 實現 256 12.2.3 效果 260 12.3 表示層 260 12.3.1 前端控制器 261 12.3.2 應用控制器 271 12.3.3 頁面控制器 283 12.3.4 模板視圖和視圖助手 288 12.4 業務邏輯層 291 12.4.1 事務腳本 291 12.4.2 領域模型 295 12.5 小結 298 第 13章 數據庫設計模式 299 13.1 數據層 299 13.2 數據映射器 299 13.2.1 問題 300 13.2.2 實現 300 13.2.3 效果 313 13.3 標識映射 315 13.3.1 問題 315 13.3.2 實現 315 13.3.3 效果 318 13.4 工作單元 319 13.4.1 問題 319 13.4.2 實現 319 13.4.3 效果 323 13.5 延遲加載 323 13.5.1 問題 323 13.5.2 實現 324 13.5.3 效果 326 13.6 領域對象工廠 326 13.6.1 問題 326 13.6.2 實現 326 13.6.3 效果 327 13.7 標識對象 329 13.7.1 問題 329 13.7.2 實現 330 13.7.3 效果 335 13.8 選擇工廠與更新工廠模式 335 13.8.1 問題 336 13.8.2 實現 336 13.8.3 效果 340 13.9 現在映射器中還剩下什么 340 13.10 小結 342 第三部分 實踐 第 14章 優秀(以及糟糕)的實踐 346 14.1 超越代碼 346 14.2 借輪子 347 14.3 合作愉快 348 14.4 為代碼插上翅膀 349 14.5 標準 350 14.6 Vagrant 350 14.7 測試 351 14.8 持續集成 351 14.9 小結 352 第 15章 PHP標準 353 15.1 為什么需要標準 353 15.2 什么是PSR 354 15.2.1 為什么選擇PSR 354 15.2.2 哪些人需要PSR 355 15.3 編碼風格 355 15.3.1 PSR-1基礎編碼規范 356 15.3.2 PSR-2編碼風格規范 358 15.3.3 檢查和修改代碼 360 15.4 PSR-4自動加載規范 362 15.5 小結 365 第 16章 通過Composer使用和創建組件 366 16.1 什么是Composer 366 16.2 安裝Composer 367 16.3 安裝一個(組)包 367 16.3.1 通過命令行安裝包 368 16.3.2 版本 368 16.3.3 require-dev元素 369 16.4 Composer與自動加載 370 16.5 創建自己的包 371 16.5.1 添加包信息 371 16.5.2 平臺軟件包 372 16.6 通過Packagist分發包 373 16.7 私有包 376 16.8 小結 377 第 17章 用Git進行版本控制 378 17.1 為什么進行版本控制 378 17.2 安裝Git 379 17.3 使用在線Git代碼庫 380 17.4 配置Git服務器 382 17.5 啟動項目 384 17.6 更新與提交 387 17.7 文件和目錄的添加與移除 390 17.7.1 添加文件 390 17.7.2 刪除文件 390 17.7.3 添加目錄 391 17.7.4 刪除目錄 391 17.8 標記一次發布 392 17.9 創建分支 393 17.10 小結 398 第 18章 使用PHPUnit進行測試 399 18.1 功能測試與單元測試 399 18.2 手動測試 400 18.3 引入PHPUnit 402 18.3.1 創建測試用例 402 18.3.2 斷言方法 405 18.3.3 測試異常 406 18.3.4 運行測試套件 407 18.3.5 約束 407 18.3.6 mock和stub 409 18.3.7 失敗是成功之母 412 18.4 編寫Web測試 415 18.4.1 為測試重構Web應用 415 18.4.2 簡單的Web測試 417 18.4.3 引入Selenium 419 18.5 警告 424 18.6 小結 426 第 19章 使用Phing進行自動化構建 427 19.1 Phing是什么 427 19.2 獲取和安裝Phing 428 19.3 編寫構建文檔 428 19.3.1 目標 430 19.3.2 屬性 432 19.3.3 類型 438 19.3.4 任務 443 19.4 小結 446 第 20章 Vagrant 447 20.1 問題 447 20.2 設置 448 20.3 掛載本地目錄到Vagrant鏡像 450 20.4 配置 451 20.4.1 設置Web服務器 452 20.4.2 設置MySQL 452 20.4.3 配置主機名 453 20.5 結束語 455 20.6 小結 455 第 21章 持續集成 456 21.1 什么是持續集成 456 21.1.1 準備一個持續集成項目 458 21.1.2 安裝Jenkins插件 467 21.1.3 設置Git公鑰 468 21.1.4 創建新項目 469 21.1.5 運行第 一次構建 472 21.1.6 配置報告 472 21.1.7 觸發構建 474 21.2 小結 476 第 22章 對象、模式和實踐 477 22.1 對象 477 22.1.1 選擇 478 22.1.2 封裝與委托 478 22.1.3 解耦 478 22.1.4 可復用性 479 22.1.5 美學 479 22.2 模式 479 22.2.1 模式給我們帶來了什么 480 22.2.2 模式與設計原則 480 22.3 實踐 482 22.3.1 測試 482 22.3.2 標準 483 22.3.3 版本控制 483 22.3.4 自動構建 483 22.3.5 持續集成 484 22.3.6 我們遺漏了什么 484 22.4 小結 485 附錄A 參考文獻 486 附錄B 一個簡單的解析器 488
|
序: |