Laravel 入門與實戰:構建主流 PHP 應用開發框架 Laravel: Up and Running: A Framework for Building Modern PHP Apps
韋瑋, 馬特·斯托弗 (Matt Stauffer)
- 出版商: 電子工業
- 出版日期: 2018-04-01
- 定價: $648
- 售價: 8.5 折 $551
- 語言: 簡體中文
- 頁數: 411
- 裝訂: 平裝
- ISBN: 7121336111
- ISBN-13: 9787121336119
-
相關分類:
Laravel、PHP
- 此書翻譯自: Laravel: Up and Running: A Framework for Building Modern PHP Apps (Paperback)
-
相關翻譯:
Laravel 啟動與運行 (Laravel: Up and Running: A Framework for Building Modern PHP Apps) (繁中版)
已絕版
買這商品的人也買了...
-
$480$379 -
$490$417 -
$454Jenkins 權威指南
-
$356Go 語言實戰 (GO in Action)
-
$780$616 -
$454深入理解 Redis
-
$450$356 -
$580$452 -
$403MySQL 王者晉級之路
-
$403DevOps 三十六計
-
$454$427 -
$580$452 -
$403PHP 7從零基礎到項目實戰
-
$352Laravel 框架開發詳解:從零基礎到運用框架快速開發 PHP 網站
-
$980$774 -
$480$379 -
$680$578 -
$580$458 -
$301混沌工程實戰 手把手教你實現系統穩定性
-
$550$429 -
$560全棧性能測試修煉寶典 JMeter 實戰, 2/e
-
$1,079$1,025 -
$750$495 -
$621使用 GitOps 實現 Kubernetes 的持續部署:模式、流程及工具
-
$490$387
相關主題
商品描述
本書從基礎開始詳細地講解了Laravel開發框架。本書對Laravel框架進行了系統的介紹,包括Laravel的背景、Laravel開發環境的搭建、路由與控制器、Blade模板、前端組件、收集和處理用戶數據、Artisan和Tinker、數據庫和Eloquent、容器、Laravel測試等知識。通過閱讀本書,讀者可以比較全面地學習並掌握Laravel開發的相關理論知識。另外,書中涵蓋大量實例,更有利於讀者在學習過程中不斷實踐。
<譯者序>
譯者序
在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 中的新功能將被標記出來。
作者簡介
Matt Stauffer,既是一名開發者,也是一位教師。他是Tighten Co. 和合伙人兼技術總監,主辦過The Five-Minute Geek Show和Laravel Podcast。
韋瑋,重慶韜翔網絡科技有限公司董事長兼CEO,《精通Python網絡爬蟲》作者,CSDN特邀IT專家,51CTO學院特約專家講師,《知道日報》特約作者,國家工信部高級網絡營銷師,蜻蜓FM簽約主播,國家專利發明人,多年IT從業經驗,曾出品發明過多門IT課程並獲得大量學員的支持與喜愛。
目錄大綱
目錄
前言 .. xxiii
第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