在Web開發領域,PHP因免費開源、語法簡單屬於類C風格語言,具有良好的跨平颱性而受到廣大業內人士的支持。經過多個預發布版本, PHP 5.0在2004年7月13日發布。該版本使用Zend引擎Ⅱ,並且加入瞭新功能,完全支持麵嚮對象。2015年12月3日,PHP 7.0.0 GA發布,性能較PHP 5.6提升瞭兩倍,新增瞭一些操作符和函數的返迴類型聲明,也增加瞭對匿名類的支持等。關於PHP 7的討論在網上也逐漸展開。不過到目前為止,國內有關專門介紹PHP 7應用開發的書籍還很少,本書的目的就是對現有的PHP 7技術進行一個匯總,書中內容是筆者在PHP 7學習和實際工作項目中的心得體會和係統總結,希望能夠幫助PHP 7學習者更好地瞭解其新特性,並應用於實際開發中。
本書由專業的PHP開發工程師精心編撰,全書循序漸進地介紹瞭PHP 7編程的基礎知識與實戰開發技能,初學PHP開發的讀者通過學習本書能夠熟練地進行PHP應用程序開發。本書的核心內容包括:PHP基礎語法、函數、麵嚮對象編程、PHP類、常見的設計模式、正則錶達式、PHP操作圖像和文件、MVC架構思想、ThinkPHP框架、NoSQL與MySQL等。另外,還介紹瞭當前熱點的O2O網站開發和App後颱開發的關鍵技術,有助於讀者掌握PHP在現代Web軟件開發領域中的應用。
本書是作者在PHP 7學習及實際工作項目中的心得體會和係統總結,內容豐富、實用性強。適閤PHP 7開發新手、使用PHP進行各類開發的程序員,也適閤作為企業內部培訓、培訓機構和大專院校的教學參考書。
陳小龍,奇虎360軟件工程師,是國內較早研究微信開發和PHP 7技術的一批人;同時為PHP7plus.cn站長、plus技術社群和plus自媒體聯盟發起者、知乎專欄作者、51CTO認證講師,著有圖書《微信公眾平颱開發實戰與應用案例》。
第1章 走進PHP的世界 1
1.1 快速認識PHP 2
1.1.1 PHP語言的的優勢 2
1.1.2 PHP的運行機製和原理 3
1.1.3 關於PHP 7 5
1.2 HTML和CSS 6
1.2.1 HTML元素 6
1.2.2 HTML常用標簽 7
1.2.3 CSS語法 11
1.2.4 CSS選擇器 12
1.2.5 CSS樣式 14
1.2.6 CSS 框模型 16
1.3 JavaScript簡介 18
1.3.1 JavaScript數據類型 18
1.3.2 JavaScript基本語句 21
1.3.3 JavaScript函數和事件 26
1.3.4 常用的JavaScript框架和庫 29
1.4 PHP開發環境搭建 30
1.5 代碼編輯器 31
1.6 編寫第一個PHP程序 32
第2章 PHP語言基礎 33
2.1 PHP的數據類型 34
2.2 運算符 37
2.3 變量 42
2.4 常量 45
2.4.1 常量的聲明 45
2.4.2 預定義常量 46
第3章 流程控製語句 48
3.1 條件控製語句 49
3.1.1 if條件控製語句 49
3.1.2 switch分支語句 50
3.2 循環控製語句 51
3.2.1 while循環 51
3.2.2 do while循環 52
3.2.3 for循環 53
3.2.4 foreach循環 54
3.3 跳轉語句 56
3.3.1 break語句 56
3.3.2 continue語句 56
3.3.3 goto語句 56
3.4 包含語句 57
3.4.1 include語句 57
3.4.2 include_once 語句 59
3.4.3 require語句 60
3.4.4 require_once語句 60
第4章 函數 61
4.1 函數的使用 62
4.2 函數的參數 62
4.2.1 參數傳遞方式 62
4.2.2 參數類型聲明 64
4.2.3 可變參數數量 66
4.3 函數返迴值 67
4.4 可變函數 68
4.5 內置函數 69
4.6 匿名函數 69
4.7 遞歸與迭代 71
第5章 字符串 73
5.1 單引號和雙引號的區彆 74
5.2 字符串連接符 74
5.3 字符串操作 75
5.3.1 改變字符串大小寫 75
5.3.2 查找字符串 75
5.3.3 替換字符串 78
5.3.4 截取字符串 79
5.3.5 去除字符串首尾空格和特殊字符 79
5.3.6 計算字符串的長度 80
5.3.7 轉義和還原字符串 80
5.3.8 重復一個字符串 81
5.3.9 隨機打亂字符串 82
5.3.10 分割字符串 82
第6章 數組 83
6.1 使用數組 84
6.1.1 數組類型 84
6.1.2 創建數組 85
6.2 二維數組和多維數組 87
6.2.1 二維數組 87
6.2.2 多維數組 87
6.3 數組操作 88
6.3.1 檢查數組中是否存在某個值 88
6.3.2 數組轉換為字符串 88
6.3.3 計算數組中的單元數目 89
6.3.4 數組當前單元和數組指針 89
6.3.5 數組中的鍵名和值 90
6.3.6 填補數組 93
6.3.7 從數組中隨機取齣一個或多個單元 97
6.3.8 數組排序與打亂數組 97
6.3.9 遍曆數組 100
6.3.10 數組的拆分與閤並 104
6.3.11 增加/刪除數組中的元素 106
6.3.12 其他常用數組函數 108
6.4 係統預定義數組 112
6.4.1 $_SERVER 112
6.4.2 $_GET和$_POST數組 114
6.4.3 $_FILES數組 115
6.4.4 $_SESSION和$_COOKIE數組 116
6.4.5 $_REQUEST[]數組 116
第7章 時間與日期 117
7.1 設置時區 118
7.1.1 在配置文件中設置 118
7.1.2 通過date_default_timezone_set函數在文件中設置 118
7.2 獲取當前時間 118
7.3 常用時間處理方法 121
7.3.1 格式化時間顯示 121
7.3.2 計算兩個日期間的時間差 124
7.3.3 從字符串中解析日期時間 124
7.3.4 日期的加減運算 125
7.4 驗證日期 125
第8章 錶單 127
8.1 錶單的種類 128
8.1.1 文本域及其類型 128
8.1.2 其他錶單類型 131
8.2 get和post方法 133
8.2.1 獲取錶單值 134
8.2.2 處理上傳文件 134
第9章 類與對象 137
9.1 什麼是類 138
9.1.1 聲明一個類 138
9.1.2 實例化一個類 139
9.1.3 訪問類中成員 139
9.1.4 靜態屬性和靜態方法 141
9.1.5 構造方法和析構方法 142
9.2 封裝和繼承特性 143
9.2.1 封裝特性 144
9.2.2 繼承特性 145
9.2.3 通過繼承實現多態 146
9.3 魔術方法 147
9.3.1 __set()和__get()方法 147
9.3.2 __isset()和__unset()方法 148
9.3.3 __call() 和__ toString() 方法 150
9.4 自動加載 151
9.4.1 __autoload() 方法 151
9.4.2 spl_autoload_register() 函數 152
9.5 抽象類和接口 153
9.5.1 抽象類 153
9.5.2 接口 154
9.6 類中的關鍵字 156
9.6.1 final關鍵字 157
9.6.2 clone 關鍵字 157
9.6.3 instanceof 關鍵字 158
9.6.4 “==”和“===” 159
第10章 正則錶達式 160
10.1 正則錶達式的用途 161
10.2 正則錶達式的語法 161
10.2.1 正則錶達式中的元素 161
10.2.2 替換和子錶達式 165
10.2.3 反嚮引用 166
10.3 在PHP中使用正則錶達式 167
第9章 類與對象
麵嚮對象編程(Object Oriented Programming,OOP)是一種被很多語言廣泛支持的編程模式,有彆於之前的麵嚮過程編程。麵嚮對象編程的思想是把具有相似特性的事物抽象成類,通過對類的屬性和方法的定義實現代碼共用。其將實現某一特定功能的代碼部分進行封裝,這樣可被多處調用,而且封裝的粒度越細小被重用的概率越大。麵嚮對象編程的繼承性和多態性也提高瞭代碼的復用度。總之,麵嚮對象編程充分地體現軟件編程中的“高內聚,低耦閤”的思想。
9.1 什麼是類
麵嚮對象編程就是要把需要解決的問題抽象為類。在現實生活中我們可以找到很多種這樣的例子,比如可以抽象齣這個世界上的一個物種為人類,人類具有身高、體重、腰圍等屬性,同時人類還可以執行一些動作,比如行走、吃飯、跳躍等。同理,在編程中,抽象齣的類也具有這樣的屬性和動作,不過在類中我們把這種“動作”稱作類的方法。比如常用的數據庫連接類,在這個類中一般會包含數據庫類型、數據庫的HOST、數據庫用戶名、密碼等屬性,同時也包含一些數據庫操作的方法,如插入、更新、查詢、刪除數據等。數據庫連接類的示例圖如圖9-1所示。
圖9-1 數據庫連接類
9.1.1 聲明一個類
類在使用前需要聲明,聲明一個類使用關鍵詞class,比如聲明一個數據庫連接類,例如:
class conn{
private $dbtype = 'mysql';
private $host = '127.0.0.1';
private $username = 'root';
private $password = '123456';
private $pre = 'zwt_';
public function insert(){}
public function update(){}
public function delete(){}
public function select(){}
}
?>
以上代碼聲明瞭一個包含數據庫連接屬性和操作方法的類conn,其中的private和public是定義屬性和方法的關鍵詞,其規定瞭被定義的屬性和方法可在什麼地方被訪問。
$dbtype、$host、$username、$password、$pre是該類中的屬性,function 定義類中的方法。
9.1.2 實例化一個類
在聲明一個類之後,要使用類中的方法,一般需要先實例化一個類,這個實例便是類中的對象。創建一個類的實例使用關鍵詞new。示例如下:
class conn{
private $dbtype = 'mysql';
private $host = '127.0.0.1';
private $username = 'root';
private $password = '123456';
private $pre = 'zwt_';
public function insert(){}
public function update(){}
public function delete(){}
public function select(){}
}
$connObj = new conn();
var_dump($connObj);
?>
本例創建瞭類conn的一個實例。如果是在類內部創建實例,可以使用new self來創建新對象。一個類可以實例化多個對象,每個對象都是獨立的個體,這些實例化的對象擁有類中定義的全部屬性和方法。當對其中一個對象進行操作時,比如改變該對象的屬性等,不會影響其他對象。
9.1.3 訪問類中成員
實例化一個類後,要訪問類中的成員,可使用符號“->”,請看下麵的示例:
class conn{
public $dbtype = 'mysql';
private $pre = 'zwt_';
public function test(){
echo "test";
}
}
$obj = new conn();
$obj->test();
echo $obj->dbtype;
?>
該例中使用“->”訪問類conn中的test對象。
在對象方法執行的時候會自動定義一個$this的特殊變量,錶示對象本身的引用。通過$this->形式可引用該對象的方法和屬性,其作用就是完成對象內部成員之間的訪問,示例如下:
class conn{
public $dbtype = 'mysql';
public function test(){
echo $this->getDbtype();
}
public function getDbtype(){
echo $this->dbtype;
}
}
$obj = new conn();
$obj->test();
?>
訪問對象的成員有時還可使用“::”符號。使用該符號一般有以下3種情況:
? parent::父類成員,這種形式的訪問可調用父類的成員變量常量和方法。
? self::自身成員,這種形式的訪問可調用當前類中的靜態成員和常量。
? 類名::成員,這種形式的訪問可調用類中的變量常量和方法。
“::”符號的使用示例如下:
class conn{
public $dbtype = 'mysql';
const HOST = '127.0.0.1'; // 在類中使用const定義常量HOST
public function test(){
echo "test";
//echo $this->getDbtype(); //靜態方法getDbtype()不能在類內部以$this->的形式訪問
}
public function test1(){
echo self::HOST; // self訪問常量HOST
self::getDbtype(); // self訪問靜態方法getDtype()
}
public static function getDbtype(){ //使用static修飾的方法稱為靜態方法
echo "mysql";
}
}
$obj = new conn();
$obj->test1();
conn::test(); // 沒有實例化類,使用“::”訪問類中的方法
?>
本示例運行結果為:
127.0.0.1mysqltest
9.1.4 靜態屬性和靜態方法
在PHP中,通過static關鍵詞修飾的成員屬性和方法稱為靜態屬性和靜態方法。靜態屬性和靜態方法可在不被實例化的情況下直接使用。
1. 靜態屬性
在類中,有一個靜態屬性的概念。和常規屬性不一樣的是,靜態屬性屬於類本身,而不屬於任何實例。因此其也可稱為類屬性,以便和對象的屬性區分開來。靜態屬性使用 static 關鍵詞定義,在類外部可使用“類名::靜態屬性名”的方式訪問,在類內部可使用“self::靜態屬性名”的方式訪問。
示例如下:
class myclass{
static $staticVal = 0;
function getStatic(){
echo self::$staticVal;
self::$staticVal++;
}
}
echo myclass::$staticVal; // 輸齣 0
$obj = new myclass();
$obj->getStatic(); // 輸齣 0
echo myclass::$staticVal; // 輸齣 1
?>
執行以上程序的結果為:
001
可見在實例化的對象中改變瞭靜態屬性 $staticVal 的值,再次訪問類屬性時其值已被改變。
2. 靜態方法
和靜態屬性相似,使用static修飾的方法稱為靜態方法,也可在不被實例化的情況下使用,其屬於類而不是被限製到任何一個特定的對象實例。因此 $this 在靜態方法中不可使用,但可在對象實例中通過“$this->靜態方法名”的形式調用靜態方法,在類內部需要使用“self::靜態方法名”的形式訪問。示例代碼如下:
class myclass{
static $staticVal = 0;
public $val = 100;
static function getStaticVal(){
echo self::$staticVal;
}
前言
編寫本書的目的
在Web開發領域,PHP因免費開源、語法簡單屬於類C風格語言,具有良好的跨平颱性而受到廣大業內人士的支持。經過多個預發布版本,PHP5.0在2004年7月13日發布。該版本使用Zend引擎Ⅱ,並且加入瞭新功能,完全支持麵嚮對象。2015年12月3日,PHP7.0.0GA發布,性能較PHP5.6提升瞭兩倍,新增瞭一些操作符和函數的返迴類型聲明,也增加瞭對匿名類的支持等。關於PHP7的討論在網上也逐漸展開。不過到目前為止,國內有關專門介紹PHP7應用開發的書籍還很少,本書的目的就是對現有的PHP7技術進行一個匯總,書中內容是筆者在PHP7學習和實際工作項目中的心得體會和係統總結,希望能夠幫助PHP7學習者更好地瞭解其新特性,並應用於實際開發中。
本書內容簡介
本書共分22章,從最基礎的HTML知識和PHP開發環境的搭建開始,逐漸深入介紹PHP7的相關特性和開發實踐。
第1章介紹PHP的運行機製和PHP7的新特性,講解PHP程序員必須要學習的HTML、CSS和JavaScript知識,學習搭建PHP的開發環境,並編寫第一個PHP程序。
第2章介紹PHP的基礎知識,包括PHP的數據類型、運算符、變量和常量的知識。
第3章講解PHP7中的各種常用流程控製語句和foreach語句與以往版本的不同之處。
第4章介紹函數的使用,包括函數參數的傳遞方式、可變函數、匿名函數等。與PHP5不同的是,PHP7中新增瞭支持參數類型的聲明和函數返迴值類型的聲明。
第5章詳細介紹PHP中的字符串,並著重講解瞭在編程中經常用到的一些字符串處理函數。
第6章講解PHP數組有關的內容。和字符串一樣,數組也是在編程中經常使用的。
第7章講解PHP中與時間、日期有關的函數,包括如何設置和獲取時間、如何計算兩個日期的時間差等。
第8章介紹錶單,PHP作為一種動態語言,經常需要收集前端用戶傳過來的數據,然後與數據庫交互,錶單是用戶填寫數據、發起與數據庫交互的第一步。
第9章介紹類與對象,包括什麼是類及類的使用,學會使用類封裝一些方法,具備麵嚮對象編程的思想是開發大型網站必不可少的基本功。
第10章介紹正則錶達式有關的內容,幾乎所有的編程語言都支持正則錶達式,本章講解正則錶達式的基本內容以及如何在PHP中使用正則錶達式。
第11章介紹PHP中的錯誤異常處理,包括PHP7中新增的錯誤處理及Error類。
第12章介紹如何使用PHP處理圖像,如獲取圖像信息、復製鏇轉圖像及為圖像加水印等。
第13章介紹目錄文件操作,PHP有著強大的目錄文件操作函數,開發人員可以創建、修改、讀取文件,還可以改變文件的屬性等。另外,還將介紹與文件上傳有關的配置。
第14章詳細講解Cookie和Session,介紹它們的基本概念和設置,通過實際案例介紹它們的工作原理和存儲機製。
第15章介紹MySQL數據庫的使用,包括數據庫的安裝和MySQL的一些基本操作,以及如何使用PHP與MySQL交互。本章在編寫的時候摒棄瞭PHP5版本中與MySQL連接的MySQL擴展,重點介紹PHP如何使用MySQLi和PDO與數據庫交互。
第16章介紹Redis的使用,包括Redis的5種數據類型,並講解如何使用PHP操作Redis。
第17章介紹PHP處理XML和JSON,包括幾種創建與讀取XML的方式,以及PHP中json_encode()和json_decode()函數的使用。
第18章介紹MVC思想和國內流行的ThinkPHP框架,本章介紹的ThinkPHP是最新版本,和以往的版本有許多不同,讀者在閱讀時需要注意。
第19章介紹編程中常用的幾種設計模式,包括工廠模式、單例模式、觀察者模式和策略模式。
第20章基於前端架構打造服務端,介紹如何使用API接口與前端交互、傳輸消息的加解密,以及前端開發中常用的模闆MustacheJs和AngularJs。
第21章從零開始講述一個O2O網站的開發流程,從需求分析到數據庫設計,再到編碼實現,以及如何引用支付模塊等。
第22章介紹當今比較流行的混閤式App的開發框架,以及如何開發接口程序、如何定義路由等。
本書相關資源
為幫助讀者更好地學習PHP,編者專門為本書創建瞭一個網站www.PHP7plus.cn,讀者可在網站上學習更多PHP程序員應該掌握的知識,包括MySQL、Nginx、Linux和架構方麵的內容。
讀者可以從以下網址獲得本書的實例源代碼。
下載地址1:
http://www.PHP7plus.cn/a/PHP7/2017/0307/1376.html
下載地址2:
http://pan.baidu.com/s/1mi8vbPe(注意區分英文字母大小寫和數字)
如果遇到下載問題,請發送郵件至booksaga@163.com進行谘詢,郵件標題注明“PHP7實踐指南配書資源”。
本書適閤的讀者
(1)PHP愛好者。
(2)想瞭解PHP7新特性的讀者。
(3)想進階的PHP程序員。
(4)開設相關課程的大專院校學生。
(5)公司內部培訓的學員。
緻謝
首先,感謝PHP之父RasmusLerdorf,是他創建瞭這個優秀的編程語言。我們在互聯網上瀏覽的網頁很多都是使用PHP編寫的,希望越來越多的朋友加入PHP的學習和開發中,共同將這個優秀的編程語言發揚光大。
其次,感謝清華大學齣版社王金柱編輯的大力支持,他在本書的編輯和齣版過程中付齣瞭很大心血。
最後,感謝傢人和朋友的支持。寫作本書需要耗費許多時間,使得我不能經常陪伴傢人和朋友,在此錶示歉意。尤其感謝我未來的女朋友,是你的延遲齣現,讓我有瞭更多時間完成這本書的創作。
在編寫本書的過程中,編者一直努力為讀者呈現完整的知識體係結構,不過限於水平,書中難免存在疏漏之處,敬請廣大讀者不吝指正。如果對本書內容有什麼建議或疑惑,可通過微信公眾號、郵箱或書友群聯係編者,編者會盡力給予迴復。
微信公眾號:chenxiaolong19941024
郵箱:314312298@qq.com
書友群:201463512
編者
2017年2月
说的太浅了。
评分应该可以,还没看
评分好好好好
评分赞
评分很不错很不错很不错很不错很不错很不错很不错很不错
评分我之圭臬,在乎书尔!
评分赞
评分书的质量很好
评分确实不错。
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有