Laravel入門與實戰:構建主流PHP應用開發框架 ( 簡體 字) |
作者:韋瑋 | 類別:1. -> 程式設計 -> 網路編程 -> PHP |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 48702 詢問書籍請說出此書號!【缺書】 NT售價: 540 元 |
出版日:3/1/2018 |
頁數:440 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121336119 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:譯者序 在Web 開發方面,相信大家對PHP 語言并不會感到陌生。是的,使用PHP 語言實現Web 應用開發確實非常便捷,正因如此,PHP 語言獲得了大量Web 開發者的忠實擁護,譯者也是其中之一。 在開發過程中,如果能使用一款優秀的PHP 框架將會事半功倍。目前使用PHP 語言開發Web 項目通常有三種方案:使用原生PHP 代碼(不基于框架)開發、基于框架開發以及基于框架并對框架進行二次開發。對大部分公司來說,開發效率這項指標是非常重要的,又因為框架實際上相當于項目的“半成品”,所以大部分公司可能更傾向于選擇一款性能優越的PHP 框架,基于框架進行具體項目的開發。 目前,可以選擇的PHP 開發框架有很多,比如Laravel、ThinkPHP、Yii、CakePHP 等,這些框架各有千秋,但如果非要讓譯者在其中選擇出一兩款自己更喜歡的框架,那么應該是Laravel 與ThinkPHP。Laravel 框架性能較好,運行速度較快,適合開發中大型項目,在國際范圍內都比較流行,但由于Laravel 框架是由國外研發的,所以目前可參考文獻與資源在國內都比較匱乏。ThinkPHP 框架是國內研發的,性能同樣也非常好,比較適合開發中小型項目,并且國內的可參考文獻與資源相對較多。這兩款框架都是非常優秀的PHP 開發框架,如果有時間,建議大家對這兩款框架進行深入的研究。 這本書主要對Laravel 框架進行了系統的介紹。包括Laravel 背景、Laravel 開發環境的搭建、路由與控制器、Blade 模板、前端組件、收集和處理用戶數據、Artisan 和Tinker、數據庫和Eloquent、用戶認證和授權、請求和響應、容器、Laravel 測試、API 編寫、存儲與檢索、郵件和通知、任務、隊列、事件、廣播及調度程序、助手和集合等。上面已經提到,Laravel 框架的相關學習資料比較匱乏,因此,衷心希望這本書出版后在一定程度上能夠彌補這方面的空缺。 有幸得到博文視點編輯孫奇俏老師的邀請,并在孫老師的監督下完成了本書的翻譯與審校工作。但由于我公司事務繁忙,精力有限,所以邀請了我的學生黃夢穎與俞渺共同完成了本書的翻譯工作。黃夢穎與俞渺都是非常優秀的高材生,都有過國外留學經歷,黃夢穎同學現已獲得了新加坡國立大學碩士學位,俞渺同學現已獲得墨爾本大學碩士學位。 翻譯過程中,我負責正文第1 ∼ 6 章翻譯以及全書的審校工作,黃夢穎負責正文第7 ∼10 章、第13 和14 章、前言、封底、詞匯表、作者簡介、封面簡介等的翻譯工作,俞渺負責正文第11 和12 章、第15 ∼ 17 章的翻譯工作。在此由衷感謝兩位同學的艱苦付出,若讀者在閱讀過程中發現翻譯文風略有不同,還請理解。 本書關于Laravel 框架相關知識的介紹非常具體,如果你希望系統地學習并掌握Laravel框架,那么本書將非常適合你。當然,由于Laravel 屬于PHP 語言眾多框架中的一種,所以,大家在閱讀本書之前最好先學習一些關于PHP 的基礎知識,這樣會更容易理解本書的內容。 再次感謝孫奇俏老師的邀請,感謝本書編輯楊嘉媛,孫老師與楊編輯在本書的審稿與編加過程中付出了大量的精力與心血。感謝黃夢穎與俞渺對翻譯做出的巨大貢獻。感謝本書原作者Matt Stauffer 在寫作過程中付出的巨大努力。感謝所有一直支持我的朋友們。 感謝所有PHP 的忠實擁護者與Laravel 愛好者,謝謝你們的支持! 韋瑋 2018 年1 月于上海
前言 一個很常見的問題是,應該如何學習Laravel ?盡管已經寫了很多年的PHP 程序,但是我不想閉門造車,我想更好地學習Rails 的強大特性,也想學習其他先進的Web 框架。 Rails 有一個非常活躍的社區,完美結合了默認配置及其靈活性,并且具有Ruby Gems的能力來提高預包裝的常用代碼。 我曾經也很猶豫是否要繼續使用PHP,直到知道了Laravel,我才堅定信心。Laravel具備Rails 所有的特性,但它不僅僅是Rails 的一個副本,更是一個全新的Web 框架。 Laravel 提供了非常完善的文檔、開放的交流社區,還繼承了許多現有的語言和框架。當我在博客和會議中分享Laravel 的學習經驗時,我已經使用Laravel 開發了幾十個應用程序和項目,并且可以在線或者面對面與成千上萬名Laravel 開發者進行交流。我的工具箱中已經有很多種開發工具了,但是當打開命令行終端,輸入laravel new project 時,我還是會感到非常激動。 關于本書 這并不是第一本關于Laravel 的書,也不會是最后一本。我不打算讓它成為一本涵蓋每一行代碼或實現模式的書。我也并不希望它一定要與現在最新版本的Laravel 保持一致。 相反,我編寫本書的主要目的是提供一個高階的概述和具體的例子,幫助開發者更快地學習Laravel。我希望能幫助讀者理解Laravel 背后的基本概念,而不是單純講解文檔。 Laravel 是一個強大且靈活的PHP 框架。它擁有發展迅速的社區、豐富的開發工具,這些特性都讓Laravel 越來越受歡迎。本書旨在幫助已經知道如何開發網站和應用程序的開發者學習如何在Laravel 中進行開發。 Laravel 的官方文檔非常清晰明了,如果讀者對一些特定的內容感興趣,但本書中又沒有進行深入講解,那么建議讀者參考Laravel 的在線文檔進行深入學習。 本書不僅對知識點進行概述,也提供了相應的實例。在學習完本書后,相信讀者便可以使用Laravel 從頭開始實現一個完整的應用程序了。希望本書能激發大家動手操作的興趣。 目標讀者 讀者要具備基本的面向對象編程基礎,了解PHP(或者至少是C 語言的一般語法),以及模型- 視圖- 控制器(MVC)開發模式和模板的基本概念。如果從來沒有開發過網站,那么可能會覺得本書的內容比較難懂。但是只要有一定的編程基礎,就不需要在閱讀本書之前了解Laravel——我們會在本書中從“Hello, world!”開始,覆蓋所有需要了解的內容。 本書結構 本書按照時間順序編寫:如果正在使用Laravel 構建第一個Web 應用程序,那么前面的章節將介紹開始時需要使用的基本組件,后面的章節將更深入地介紹知識點及對應的具體實例。 本書的每一部分都可以單獨閱讀,但是也力圖使章節之間的聯系更加緊密,以便剛接觸框架的讀者能夠從頭到尾順暢地進行閱讀和學習。 每章節的最后都包括“測試”和“本章小結(TL;DR)”,TL;DR 表示“長話短說”。這兩部分將展示如何測試對應章節中講過的方法,并對所涵蓋的內容進行高階概述。 本書基于Laravel 5.3 版本,但是因為Laravel 5.1 是最新的LTS 版本,所以Laravel 5.2或Laravel 5.3 中的新功能將被標記出來。 |
內容簡介:本書從基礎開始詳細地講解了Laravel開發框架。本書對Laravel框架進行了系統的介紹,包括Laravel的背景、Laravel開發環境的搭建、路由與控制器、Blade模板、前端組件、收集和處理用戶數據、Artisan和Tinker、數據庫和Eloquent、容器、Laravel測試等知識。通過閱讀本書,讀者可以比較全面地學習并掌握Laravel開發的相關理論知識。另外,書中涵蓋大量實例,更有利于讀者在學習過程中不斷實踐。 |
目錄:第1 章 為什么使用Laravel ........1 為什么要使用框架 ...........1 “自己動手做” ............2 一致性和靈活性 ............2 Web 和PHP 框架的簡史 ..........2 Ruby on Rail ............2 PHP 框架的涌入 ............3 CodeIgniter 的優點與缺點 ..........3 Laravel 1、Laravel 2 和Laravel 3 .........3 Laravel 4 .............4 Laravel 5 .............4 Laravel 有什么特別之處 ..........4 Laravel 的哲學 ............4 Laravel 如何讓開發者快樂 ..........5 Laravel 社區 ............6 它是如何工作的 .............6 為什么使用Laravel ............9 第2 章 搭建Laravel 的開發環境 ......11 系統要求 ............. 11 Composer ............ 11 本地開發環境 ............12 Laravel Valet ............12 Laravel Homestead ..........13 創建一個新的Laravel 項目 .........17 使用Laravel 安裝工具來安裝Laravel ........17 通過Composer 的create-project 來安裝Laravel .....17 Laravel 的目錄結構 ............18 文件夾 .............18 文件 .............19 配置 .............19 啟動和運行 ............20 測試 .............21 本章小結 ..............21 第3 章 路由和控制器 ........23 路由定義 ..............23 路由處理 .............25 路由參數 .............26 路由名稱 .............27 路由組 ..............30 中間件 .............30 路徑前綴 .............31 子域名路由 ...........32 命名空間前綴 ............33 名稱前綴 .............33 視圖 .............33 使用視圖Composers 在每個視圖中共享變量 .......35 控制器 ..............35 獲取用戶輸入 ............38 將依賴注入控制器 ..........39 資源控制器 ...........40 路由模型綁定 ............42 隱式路由模型綁定 ..........42 自定義路由模型綁定 ...........43 路由緩存 ..............44 表單方法欺騙(Form Method Spoofing) .......44 HTTP 動詞的介紹 ...........44 Laravel 中的HTTP 動詞 .........45 在HTML 表單中進行HTTP 方法欺騙 .......45 CSRF 保護 .............45 重定向 ..............47 redirect()->to() ...........48 redirect()->route() ..........48 redirect()->back() ..........49 其他重定向方法 ............49 redirect()->with() ...........49 中止請求 ..............51 自定義響應 ............51 response()->make() ..........51 response()->json() 和->jsonp() ........52 response()->download() 和->file() ........52 測試 .............52 本章小結 ..............53 第4 章 Blade 模板 ........55 輸出數據 ..............56 控制結構 ..............56 條件語句 .............57 循環語句 .............57 or .............59 模板繼承 ..............60 用@section/@show 和@yield 定義Section .......60 @parent .............62 @include .............62 @each ............63 視圖Composer 和服務注入 .........63 用視圖Composer 綁定數據到視圖 .......64 Blade 服務注入 ...........67 自定義Blade 指令 ...........68 自定義Blade 指令中的參數 ..........69 示例:對多租戶應用程序(Multitenant App)使用自定義Blade 指令..70 測試 .............71 本章小結 ..............72 第5 章 前端組件 .........73 Elixir ..............73 Elixir 文件夾結構 ..........75 運行Elixir .............75 Elixir 提供了什么 ..........76 分頁 .............82 分頁數據庫結果 ............82 手動創建分頁 ............83 消息包 ..............84 錯誤包命名 ...........85 字符串助手、多元化和本地化 ..........86 字符串助手和多元化 ...........86 本地化 .............87 測試 .............89 用Elixir 進行測試 ...........89 測試消息包和錯誤包 ...........90 翻譯和本地化 ............90 本章小結 ..............90 第6 章 收集和處理用戶數據 ......91 注入請求對象 ............91 $request->all() ...........92 $request->except() 和 $request->only() .......92 $request->has() 與$request->exists() ........93 $request->input() ...........93 數組輸入 .............94 JSON 輸入($request->json()) ........94 路由數據 ..............96 通過Request 實現 ...........96 通過路由參數實現 ..........96 上傳的文件 ............96 驗證 .............99 在控制器中使用ValidatesRequests 的validate() 方法 ....99 手動驗證 ............. 102 顯示驗證錯誤信息 .......... 102 表單請求 ............ 103 創建表單請求 ............ 103 使用表單請求 ............ 104 Eloquent 模型質量分配 .......... 105 {{ 與 {!! ............. 106 測試 ............. 106 本章小結 ............ 107 第7 章 Artisan 和Tinker .......109 Artisan 入門 ............. 109 Artisan 的基本命令 ............ 110 選項 ............. 110 組合命令 ............. 111 書寫常見的Artisan 命令 .......... 113 注冊命令 ............. 115 示例命令 ............. 116 參數和選項 ........... 117 輸入 ............. 118 提示 ............ 120 輸出 ............. 121 在其他代碼中調用Artisan 命令 ........ 122 Tinker ............. 123 測試 ............. 124 本章小結 ............ 125 第8 章 數據庫和Eloquent .......127 配置 ............. 127 數據庫連接 ........... 127 其他數據庫配置選項 ........... 129 遷移 ............. 129 定義遷移 ............. 129 運行遷移 ............. 137 填充 ............. 138 創建填充器 ........... 138 模型工廠 ............. 139 查詢構造器 ............ 143 DB Facade 的基本使用.......... 143 原始SQL 語句 ............ 144 查詢構造器鏈 ............ 145 事務 ............. 153 Eloquent 入門 ............. 154 新建和定義Eloquent 模型 .......... 156 通過Eloquent 獲取數據 .......... 157 Eloquent 的插入和更新 ......... 159 Eloquent 中的刪除 .......... 162 作用域 ............. 164 自定義與訪問器、修改器和屬性轉換器的字段交互 .... 167 Eloquent 集合 ............ 171 Eloquent 序列化 .......... 173 Eloquent 關系 ............ 175 通過子類更新父類時間戳 ......... 186 Eloquent 事件 ............. 188 測試 ............. 189 本章小結 ............ 191 第9 章 用戶認證和授權 .......193 用戶模型和遷移 ........... 194 使用auth() 全局助手和認證Facade ........ 197 Auth 控制器 ............. 197 RegisterController ........... 197 LoginController ........... 199 ResetPasswordController ......... 200 ForgotPasswordController ......... 200 Auth::routes() ............. 200 認證腳手架(Auth Scaffold) ......... 201 “記住我” ............ 202 手動認證用戶 ............ 203 認證中間件 ............ 204 保護 ............. 204 修改默認保護 ............ 205 在不改變默認情況下使用其他保護 ........ 205 添加新的保護 ............ 205 創建自定義用戶提供器 ......... 206 為非關系型數據庫自定義用戶提供器 ........ 207 認證事件 ............ 207 授權(ACL)和角色 ........... 208 定義授權規則 ............ 208 Gate facade(和注入Gate) ......... 209 Authorize 中間件 ........... 210 控制器授權 ........... 210 檢查用戶實例 ............ 212 Blade 檢查 ........... 213 插入檢查 ............. 213 政策 ............. 214 測試 ............. 216 本章小結 ............ 218 第10 章 請求和響應 ........221 Laravel 請求的生命周期 .......... 221 引導應用程序 ............ 222 服務提供者 ........... 223 Request 對象 ............ 224 在Laravel 中獲取請求對象 ......... 225 獲取請求的基本信息 ........... 225 持久性 ............. 228 Response 對象 ............ 228 在容器中使用和創建Response 類 ........ 229 特殊的響應類型 .......... 230 Laravel 和中間件 ........... 233 中間件入門 ........... 233 創建自定義中間件 .......... 234 綁定中間件 ........... 236 向中間件傳參 ............ 239 測試 ............. 240 本章小結 ............ 241 第11 章 容器 ..........243 依賴注入簡介 ............ 243 依賴注入和Laravel ............ 245 app() 全局助手 ........... 245 容器如何連接 ............ 246 將類綁定到容器 ........... 247 綁定到閉包 ........... 247 綁定單例模式、別名和實例 ......... 248 將具體實例綁定到接口 ......... 249 語境綁定 ............. 250 構造器注入 ............ 250 方法注入 ............ 251 facade 與容器 ............. 252 facade 如何工作 .......... 252 服務提供者 ............ 254 測試 ............. 254 本章小結 ............ 255 第12 章 測試 ..........257 測試基礎 ............ 258 命名測試 ............ 260 測試環境 ............ 261 測試特性 ............ 262 WithoutMiddleware ........... 262 數據庫遷移 ........... 262 數據庫事務 ........... 263 應用程序測試 ............ 263 測試用例 ............. 263 “訪問”路徑 ............ 264 自定義應用測試斷言 ........... 266 JSON 和Non-visit() 應用測試斷言 ....... 267 點擊和表單 ........... 271 任務和事件 ........... 273 認證和會話 ........... 273 Artisan 和Seed........... 274 mock(模擬) ............. 275 Mockery ............ 275 模擬facade ............ 278 本章小結 ............ 279 第13 章 編寫API ........281 類REST JSON API 基礎 .......... 281 控制器組織和JSON 返回 .......... 282 讀取和發送頭 ............ 286 在Laravel 中發送響應頭 .......... 287 在Laravel 中讀取請求頭 .......... 287 Eloquent 分頁 ............. 287 排序和篩選 ............ 289 對API 結果排序 .......... 289 過濾API 結果 ........... 291 數據轉換 ............ 292 編寫自己的轉換器 .......... 292 嵌套和關系 ............ 293 使用Laravel Passport 的API 認證 ......... 295 OAuth2.0 簡介 ........... 295 安裝Passport ........... 296 Passport 的API ........... 297 Passport 可用的授權類型 .......... 298 使用Passport API 和Vue 組件管理客戶端和令牌 ...... 305 Passport 作用域 ........... 307 Laravel 5.2 以上版本的API 令牌認證 ....... 309 測試 ............. 310 本章小結 ............ 311 第14 章 存儲和檢索 ........313 本地和云端文件管理器 .......... 313 配置文件訪問 ............ 313 使用存儲facade .......... 314 添加額外的Flysystem 提供商 ......... 316 基本的文件上傳和操作 .......... 317 會話 ............. 318 訪問會話 ............. 318 會話實例的可用方法 ........... 319 閃存會話存儲 ............ 321 高速緩存器cache ........... 321 訪問高速緩存 ............ 322 Cache 實例中可用的方法 .......... 322 cookie ............. 324 Laravel 中的cookie ........... 324 訪問cookie 工具 ........... 324 基于Laravel Scout 全文搜索 ......... 327 安裝Scout ........... 327 標記索引模型 ............ 327 索引檢索 ............. 328 隊列和Scout ........... 328 執行無索引操作 .......... 328 通過代碼手動觸發索引 ......... 329 利用CLI 手動觸發索引 .......... 329 測試 ............. 329 文件存儲 ............. 329 會話 ............. 331 高速緩存 ............. 332 cookie ............ 332 本章小結 ............ 334 第15 章 郵件和通知 ........335 郵件 ............. 335 “classic”郵件 ........... 336 基本“mailable”郵件......... 336 郵件模版 ............. 339 build() 中可用的方法 .......... 339 附件和內聯圖片 .......... 340 隊列 ............. 341 本地開發 ............. 342 通知 ............. 344 為通知對象定義via() 方法 ......... 346 發送通知 ............. 347 排隊通知 ............. 348 開箱即用的通知類型 ........... 348 測試 ............. 351 郵件 ............. 351 通知 ............. 352 本章小結 ............ 352 第16 章 隊列,任務,事件,廣播及調度程序 ...353 隊列 ............. 353 為什么使用隊列 .......... 354 基本隊列配置 ............ 354 列隊任務 ............. 354 運行隊列工作者 .......... 358 錯誤處理 ............. 358 控制隊列 ............. 361 支持其他功能的隊列 ........... 361 事件 ............. 362 觸發事件 ............. 362 監聽事件 ............. 364 通過WebSocket 廣播事件及Laravel Echo ........ 367 配置和設置 ........... 368 廣播事件 ............. 368 接收消息 ............. 371 高級廣播工具 ............ 372 Laravel Echo(JavaScript 方面)........ 376 調度程序 ............ 379 可用任務類型 ............ 380 可用時間框架 ............ 380 阻塞和重疊 ........... 382 處理任務輸出 ............ 382 任務鉤子 ............. 383 測試 ............. 384 本章小結 ............ 385 第17 章 助手和集合 ........387 助手 ............. 387 數組 ............. 387 字符串 ............. 389 應用路徑 ............. 391 URL ............. 392 Misc(宏指令結構技術體系) ......... 394 集合 ............. 397 集合的基礎 ........... 397 幾種方法 ............. 399 本章小結 ............ 404 詞匯表 ..........405 |
序: |