本書(shū)作者結(jié)合新版PHP,提供了自成一體的經(jīng)典實(shí)例,為你解決日常工作中遇到的各種問(wèn)題。無(wú)論你是什么層次的開(kāi)發(fā)人員,都可以遵循本書(shū)提供的既定模式和示例,使用PHP解決一些常見(jiàn)問(wèn)題。參考書(shū)中的經(jīng)典實(shí)例,你可以快速識(shí)別和解決復(fù)雜的問(wèn)題,不必重新發(fā)明輪子。這本實(shí)用指南將幫助你:利用函數(shù)和對(duì)象高效構(gòu)建應(yīng)用。探索現(xiàn)代PHP的類(lèi)型系統(tǒng)。了解加密、錯(cuò)誤處理、調(diào)試和性能調(diào)優(yōu)等關(guān)鍵概念。審視PHP包和擴(kuò)展生態(tài)系統(tǒng)。學(xué)習(xí)如何構(gòu)建基本的Web和命令行應(yīng)用。安全處理設(shè)備中的加密文件和純文本文件。
編輯推薦
如果你是一名PHP開(kāi)發(fā)人員,正在為常見(jiàn)問(wèn)題尋找行之有效的解決方法,那就閱讀這本經(jīng)典實(shí)例吧,它能夠幫助你解決各種編程問(wèn)題。PHP是一門(mén)極易使用的語(yǔ)言,這就是現(xiàn)今超過(guò)75%的在線網(wǎng)站使用它的原因。但是,PHP對(duì)編程錯(cuò)誤的寬容程度令人難以置信,從而導(dǎo)致有問(wèn)題的代碼一再被重復(fù)使用。
本書(shū)作者結(jié)合新版PHP,提供了自成一體的經(jīng)典實(shí)例,為你解決日常工作中遇到的各種問(wèn)題。無(wú)論你是什么層次的開(kāi)發(fā)人員,都可以遵循本書(shū)提供的既定模式和示例,使用PHP解決一些常見(jiàn)問(wèn)題。參考書(shū)中的經(jīng)典實(shí)例,你可以快速識(shí)別和解決復(fù)雜的問(wèn)題,不必重新發(fā)明輪子。
專(zhuān)家推薦
Eric把他在PHP社區(qū)中積累的豐富經(jīng)驗(yàn)匯集到這本書(shū)中,通俗易懂。強(qiáng)烈推薦給新老PHP開(kāi)發(fā)人員!
Steve Grunwell
Mailchimp資深軟件工程師
Eric A. Mann,從事軟件工程師工作近二十年。他曾為早期創(chuàng)業(yè)公司和財(cái)富500強(qiáng)企業(yè)構(gòu)建可伸縮的項(xiàng)目。
目錄
前言 1
第1 章 變量 7
11 定義常量9
12 創(chuàng)建可變變量 11
13 就地交換變量 13
第2 章 運(yùn)算符 17
21 使用三元運(yùn)算符代替if-else 塊 21
22 合并潛在的空值 24
23 比較恒等值 25
24 使用飛船運(yùn)算符對(duì)值進(jìn)行排序 28
25 使用運(yùn)算符抑制診斷錯(cuò)誤 30
26 比較整數(shù)中的位 31
第3 章 函數(shù) 37
31 訪問(wèn)函數(shù)的參數(shù) 40
32 為函數(shù)的參數(shù)設(shè)置默認(rèn)值 42
33 使用具名參數(shù) 44
34 規(guī)定函數(shù)參數(shù)和返回值類(lèi)型 46
35 定義接受可變數(shù)量參數(shù)的函數(shù) 50
36 返回多個(gè)值 52
37 在函數(shù)內(nèi)訪問(wèn)全局變量 54
38 在一個(gè)函數(shù)的多次調(diào)用之間管理狀態(tài) 58
39 定義動(dòng)態(tài)函數(shù) 61
310 把函數(shù)作為參數(shù)傳遞給其他函數(shù) 62
311 使用簡(jiǎn)潔的函數(shù)定義(箭頭函數(shù)) 65
312 創(chuàng)建沒(méi)有返回值的函數(shù) 68
313 創(chuàng)建不返回的函數(shù) 70
第4 章 字符串 73
41 訪問(wèn)長(zhǎng)字符串中的子字符串 76
42 從一個(gè)字符串中提取另一個(gè)字符串78
43 替換字符串的一部分 80
44 一次處理字符串的一個(gè)字節(jié) 83
45 生成隨機(jī)字符串 86
46 在字符串中內(nèi)插變量 87
47 把多個(gè)字符串拼接起來(lái) 89
48 管理存儲(chǔ)在字符串中的二進(jìn)制數(shù)據(jù)92
第5 章 數(shù)字 97
51 驗(yàn)證變量中的數(shù)字 98
52 比較浮點(diǎn)數(shù) 100
53 舍入浮點(diǎn)數(shù) 102
54 生成真正的隨機(jī)數(shù) 105
55 生成可預(yù)測(cè)的隨機(jī)數(shù) 106
56 生成加權(quán)隨機(jī)數(shù) 109
57 計(jì)算對(duì)數(shù) 112
58 計(jì)算指數(shù) 113
59 把數(shù)字格式化為字符串 114
510 處理非常大或非常小的數(shù)字 115
511 在不同的進(jìn)制之間轉(zhuǎn)換數(shù)字 118
第6 章 日期和時(shí)間 121
61 獲取當(dāng)前日期和時(shí)間 122
62 格式化日期和時(shí)間 124
63 把日期和時(shí)間轉(zhuǎn)換為UNIX 時(shí)間戳 128
64 從UNIX 時(shí)間戳中提取日期和時(shí)間信息 130
65 計(jì)算兩個(gè)日期之間的差異 131
66 從任意字符串中解析日期和時(shí)間 133
67 驗(yàn)證日期137
68 增加或減去日期 138
69 跨時(shí)區(qū)計(jì)算時(shí)間 142
第7 章 數(shù)組 145
71 為數(shù)組中的一個(gè)鍵關(guān)聯(lián)多個(gè)元素 147
72 用一定范圍內(nèi)的數(shù)字初始化數(shù)組 150
73 迭代數(shù)組中的項(xiàng) 152
74 從關(guān)聯(lián)數(shù)組和數(shù)字?jǐn)?shù)組中刪除元素154
75 改變數(shù)組的大小 158
76 把一個(gè)數(shù)組追加到另一個(gè)數(shù)組中 161
77 根據(jù)現(xiàn)有數(shù)組的片段創(chuàng)建數(shù)組 164
78 數(shù)組和字符串之間的轉(zhuǎn)換 168
79 反轉(zhuǎn)數(shù)組171
710 對(duì)數(shù)組進(jìn)行排序 173
711 基于函數(shù)對(duì)數(shù)組進(jìn)行排序 176
712 隨機(jī)排列數(shù)組中的元素 178
713 把一個(gè)函數(shù)應(yīng)用于數(shù)組的每個(gè)元素上 179
714 把數(shù)組歸約為單個(gè)值 182
715 迭代無(wú)限大或非常大(特別耗資源)的數(shù)組 184
第8 章 類(lèi)和對(duì)象 189
81 由自定義的類(lèi)實(shí)例化對(duì)象 197
82 使用定義的默認(rèn)值構(gòu)造對(duì)象 199
83 在類(lèi)中定義只讀屬性 201
84 析構(gòu)用不到的對(duì)象 204
85 使用魔術(shù)方法提供動(dòng)態(tài)屬性 207
86 擴(kuò)展類(lèi)以定義附加功能 209
87 強(qiáng)制類(lèi)表現(xiàn)出特定的行為 212
88 創(chuàng)建抽象基類(lèi) 217
89 防止更改類(lèi)和方法 219
810 克隆對(duì)象 224
811 定義靜態(tài)屬性和方法 228
812 內(nèi)省對(duì)象的私有屬性或方法 231
813 在類(lèi)之間重用代碼 233
第9 章 安全和加密 239
91 過(guò)濾、驗(yàn)證和凈化用戶輸入 246
92 把敏感憑證放在應(yīng)用代碼外部 251
93 散列和驗(yàn)證密碼 253
94 加密和解密數(shù)據(jù) 257
95 把加密數(shù)據(jù)存入文件 263
96 加密簽名發(fā)送給其他應(yīng)用的消息 268
97 驗(yàn)證加密簽名 270
第10 章 文件處理 273
101 創(chuàng)建或打開(kāi)本地文件 274
102 把文件讀入字符串 276
103 讀取文件的特定片段 278
104 就地修改文件 279
105 同時(shí)寫(xiě)入多個(gè)文件 281
106 鎖定文件,防止其他進(jìn)程訪問(wèn)或修改 283
第11 章 流 287
111 把數(shù)據(jù)流式寫(xiě)入臨時(shí)文件和從臨時(shí)文件中流式讀取數(shù)據(jù) 292
112 讀取PHP 輸入流 294
113 寫(xiě)入PHP 輸出流 297
114 從一個(gè)流中讀取,寫(xiě)入另一個(gè)流 300
115 把不同的流處理程序組合在一起 302
116 自定義流包裝器 306
第12 章 錯(cuò)誤處理 311
121 查找并修復(fù)解析錯(cuò)誤 311
122 創(chuàng)建和處理自定義異常 313
123 隱藏錯(cuò)誤消息,不讓終端用戶看到 316
124 使用自定義錯(cuò)誤處理程序319
125 把錯(cuò)誤記錄到外部流 321
第13 章 調(diào)試和測(cè)試 323
131 使用調(diào)試器擴(kuò)展 325
132 編寫(xiě)單元測(cè)試 327
133 自動(dòng)化單元測(cè)試 333
134 靜態(tài)代碼分析 336
135 記錄調(diào)試信息 338
136 將變量?jī)?nèi)容轉(zhuǎn)儲(chǔ)為字符串342
137 使用內(nèi)置Web 服務(wù)器快速運(yùn)行應(yīng)用 346
138 使用單元測(cè)試通過(guò)git-bisect 檢測(cè)版本控制項(xiàng)目中的回歸 348
第14 章 性能調(diào)優(yōu) 355
141 計(jì)算函數(shù)的執(zhí)行時(shí)間 358
142 對(duì)應(yīng)用的性能進(jìn)行基準(zhǔn)測(cè)試 363
143 緩存操作碼,提升應(yīng)用速度 370
第15 章 包和擴(kuò)展 375
151 定義Composer 項(xiàng)目 378
152 尋找Composer 包 381
153 安裝和更新Composer 包 383
154 安裝PHP 原生擴(kuò)展 387
第16 章 數(shù)據(jù)庫(kù) 389
161 關(guān)系數(shù)據(jù)庫(kù) 389
162 鍵值存儲(chǔ)器 390
163 圖數(shù)據(jù)庫(kù) 391
164 文檔數(shù)據(jù)庫(kù) 392
165 連接SQLite 數(shù)據(jù)庫(kù) 392
166 使用PDO 連接外部數(shù)據(jù)庫(kù)提供程序 395
167 凈化數(shù)據(jù)庫(kù)查詢中的用戶輸入 399
168 模擬數(shù)據(jù)庫(kù)集成測(cè)試的數(shù)據(jù) 402
169 使用Eloquent ORM 查詢SQL 數(shù)據(jù)庫(kù) 408
第17 章 PHP 異步編程 413
171 異步從遠(yuǎn)程API 獲取數(shù)據(jù) 419
172 等待多個(gè)異步操作的結(jié)果421
173 中斷一個(gè)操作,執(zhí)行另一個(gè)操作 423
174 在單獨(dú)的線程中運(yùn)行代碼427
175 在線程之間收發(fā)消息 432
176 使用Fiber 管理流內(nèi)容 437
第18 章 PHP 命令行 441
181 解析程序參數(shù) 442
182 讀取交互式用戶輸入 446
183 為控制臺(tái)輸出著色 447
184 使用Symfony Console 創(chuàng)建命令行應(yīng)用 449
185 使用PHP 原生的REPL 453