《细说PHP》读书笔记
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                《细说PHP》读书笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                第1-5章 略
第6章 PHP基本語法
6.1 PHP的應用
- 收集表單數據
- 生成動態網頁
- 字符串處理
- 動態輸出圖像
- 處理服務器端文件系統
- 編寫數據庫支持的網頁
- 會話跟蹤控制
- 處理XML文件
- 支持利用大量的網絡協議
- 服務器端的其他相關操作
6.2 PHP語言標記
- 標準風格:開始標記是<?php,結束標記是?>
- 指令分隔符:分號
- 程序注釋:多行注釋/* */,單行注釋//或#
- 空白的處理: - 使用兩個空行:一個源文件的兩個代碼片段之間、兩個類的聲明之間
- 使用一個空行:兩個函數聲明之間、注釋之前。
 
6.3 變量
- 變量的聲明:使用$后面跟變量名表示,弱類型語言不區分類型
- 判空:使用isset()函數檢測變量是否設置,使用empty()函數檢查變量是否為空。對于""、0、“0”、NULL、FALSE、array()、var、$var,以及沒有任何屬性的對象都被認為是空。
- 變量的命名:嚴格區分大小寫、以字母或下劃線開頭。
- 可變變量:$num等價于num等價于num等價于{$num},即一個可變變量獲取一個普通變量的值作為這個可變變量的變量名。
- 變量的引用賦值:使用&符號,例如:car="BWM";car = "BWM";car="BWM";bike = &car;兩個變量的值會互相關聯,一個修改;另一個自動被修改。但unset(car;兩個變量的值會互相關聯,一個修改;另一個自動被修改。但unset(car;兩個變量的值會互相關聯,一個修改;另一個自動被修改。但unset(car)只會取消兩個變量的關聯關系,而變量$bike不會消失
- 變量的類型:PHP支持8種原始類型,四種標量類型(boolean、integer、float、string)、兩種復合類型(array、object)、兩種特殊類型(resource、NULL)
- 定界符<<<:從<<<之后的標識符開始,到最后是同樣的標識符結束字符串。
- 數組:使用逗號分隔的key=>value參數。例如:$arr = array(“foo” => “bar”, 12 => true);
- 對象://創建對象 $p = new Person; //屬性賦值 $p->name = “Taylor”; //調用方法 $p->say();
- 強制類型轉換:若參與運算:true->1.false->0,null->0,例如:num1="100Swift";num1 = "100Swift";num1="100Swift";num2 = 11;$result = $num1 + $num2; // 結果 result = 111
- 常量的定義:例如 define(“PI”, 3.1415926); echo PI; 常量的定義默認區分大小寫,當define函數的第三個參數為true,則不區分大小寫。
- 運算符,字符串運算符:英文句號.可將字符串與變量相連。比較運算符:全等于===,操作數相同并且類型相同。
第7章 PHP的流程控制結構
7.1 分支結構
- if else
- switch
7.2 循環結構
- while
- do while
- for
7.3 特殊的流程控制語句
- break
- continue
- exit:直接退出當前腳本
第8章 PHP的函數應用
8.1 自定義函數
例如:
function getName($name) { echo "姓名 = $name"; return $name; }$result = getName("函數調用"); echo "函數執行結果 = $result";8.2 PHP變量的范圍
- 局部變量:只作用于函數內部
- 全局變量:在函數中使用需要用global關鍵字聲明,或使用$GLOBALS[“age”]
- 靜態變量:內部動態變量在函數調用結束后自動釋放,而靜態變量在函數執行結束后依然保存在內存中,在所有對該函數的調用之間共享
8.3 聲明及應用各種形式的PHP函數
- 常規參數的函數:string chr(int ascii)
- 偽類型參數的函數:mixed funName(mixed $args)
- 引用參數的函數:void funName(array &arg),PHP默認是按值傳遞參數,在函數內部改變參數的值并不會改變函數外部的值。
- 默認參數的函數:function getDefault($m_name=“LiZongWei”, $m_age=“11”) {}
- 可變個數參數的函數:使用系統的func_get_args()函數接收多個參數。
- 回調函數:變量函數
8.4 使用自定義函數庫
- include函數:讀入指定文件并執行程序,用于流程控制或設置配置文件和攔截器。
- require函數:讀入目標文件內容并替換,用于文件的開頭/結尾處或定義類的映射關系。
- include_once 函數:在腳本執行期間包含并運行指定文件。與 include 語句類似,唯一區別是如果該文件中已經被包含過,則不會再次包含;
- require_once 函數:和 require 語句完全相同,唯一區別是 PHP 會檢查該文件是否已經被包含過,如果是則不會再次包含。
第9章 PHP中的數組與數據結構
9.1 數組的分類
- 數組分為索引數組和關聯數組兩種
9.2 數組的定義
- 直接賦值的方式聲明數組:例如:list[0]="WuLei";list[0] = "WuLei";list[0]="WuLei";list[1] = 27;若沒有指定索引值,則緊跟索引值元素中最高的索引值遞增。
- 輸出數組的所有值:使用系統的print_r()或var_dump()函數(輸出變量類型)
- 使用array()新建數組:例如:$soccer = array(2, “name” => “WuLei”, 8 => 27, “Man”);
- 多位數組的聲明:例如:
9.3 數組的遍歷
- 數組的遍歷:使用for循環或foreach,例如:
- 聯合使用list()、each()、while循環遍歷數組
9.4 預定義數組
- $_SERVER:服務器信息
- $_ENV:執行環境提交至腳本的變量
- $_GET:由URL請求提交至腳本的變量
- $_POST:由HTTP POST方法提交至腳本的變量
- $_COOKIE:由HTTP Cookies方法提交至腳本的變量
- $_REQUEST:包含 $_GET、 $_POST、 $_COOKIE中的全部內容。
9.5 數組的相關處理函數
| array_values() | 返回數組中的所有元素值 | 
| array_keys() | 返回數組中的所有鍵名 | 
| in_array() | 檢查數組中是否存在某個值 若可選第三個參數為true,只有元素存在于數組中且數據類型相同時才返回true | 
| array_search() | 搜索給定值,若存在返回相應的鍵名 若可選第三個參數為true,只有元素存在于數組中且數據類型相同才返回對應的key | 
| array_flip() | 交換數組中的鍵值,返回一個反轉后的數組 若同一個值出現了多次,則最后一個鍵名作為它的值 | 
| array_reverse() | 將原數組中的元素順序翻轉,創建新的數組并返回 | 
| count() | 計算數組中的元素數目或對象中的屬性個數 對于數組的其它值會返回1,若參數是變量而變量沒有定義或變量包含一個空的數組則返回0 | 
| array_count_values() | 統計數組中所有值出現的次數 | 
| array_unique() | 刪除數組中重復的值,并返回沒有重復值的新數組 | 
| array_filter() | 用回調函數過濾數組中的元素 | 
| array_walk() | 對數組中的每個元素應用回調函數的處理 | 
| array_map() | 可處理多個數組,將回調函數作用到給定數組的元素上 比array_walk()函數更靈活 | 
| sort() | 升序排序 | 
| rsort() | 降序排序 | 
| usort() | 按用戶自定義的回調函數對數據排序 | 
| asort() | 對數組進行升序排序并保持索引關系 | 
| arsort() | 對數組進行降序排序并保持索引關系 | 
| uasort() | 按用戶自定義的回調函數對數組進行升序排序并保持索引關系 | 
| ksort() | 按鍵名對數組進行升序排序 為數組值保留原來的鍵 | 
| uksort() | 按用戶自定義的回調函數按鍵名對數組進行升序排序 | 
| natsort() | 用自然順序算法對給定數組中的元素排序 | 
| natcasesort() | 用不區分大小寫的自然順序算法對給定數組中的元素排序 | 
| array_multisort() | 對多個數組或多維數組進行排序 | 
| array_slice() | 在數組中根據條件取出一段值并返回 | 
| array_splice() | 選擇數組中的一系列元素用入參代替 | 
| array_combine() | 合并兩個數組來創建一個新數組,其中一個數組作為鍵,一個數組作為值 若其中一個數組為空或兩個數組的元素個數不同,則會返回false | 
| array_merge() | 把一個或多個數組合并為一個數組 若鍵名有重復,則取最后一個鍵名對應的值 | 
| array_intersect() | 計算數組的交集 鍵名保留不變。僅有值用于比較 | 
| array_diff() | 返回兩個數組的差集數組 返回的數組中,鍵名保持不變 | 
| array_rand() | 從數組中隨機選出一個或多個元素并返回 | 
| shuffle() | 將數組中的元素按隨機順序重新排列 | 
| array_sum() | 返回數組中所有值得總和 | 
| range() | 創建并返回一個包含特定范圍的元素的數組 | 
第10章 PHP面向對象的程序設計
10.1 面向對象的示例
class Person { var $name; private $age;// 構造方法1 function Person($name="Taylor") { $this->name = $name; }/* 構造方法2 function __construct($age="my_default") { $this->age = $age; } */ public function __set($propertyName, $propertyValue) { $this->$propertyName = $propertyValue; }public function __get($propertyName) { return $this->$propertyName; }function say() { echo "<br>姓名:".$this->name.",年齡:".$this->age; }private function walk() { echo "行走 <br>"; }function __destruct() { echo "<br>再見".$this->name; } }$p = new Person(); $p->say(); // 姓名:Taylor $p2 = new Person("Swift"); $p2->say(); // 姓名:Swift // $p2->walk(); 調用報錯,不能在外部調用私有方法 // 若無預定義__set()會調用報錯,因為不能在外部調用私有屬性 $p2->age = 66; echo $p2->age; $p2->say();// 繼承class Student extends Person { var $school; static $score;static function getScore() { return "<br>分數:".self::$score; }function study() { echo "<br>學生:".$this->name.",正在學習".$this->school." <br>"; }// 方法重寫 function say() { echo "<br>學生:".$this->name.",正在說話。。。 <br>"; } }$s = new Student("Tom"); $s->study(); $s->school = "math"; $s->study(); $s->say();Student::$score = 99;// 靜態變量的調用 echo Student::$score; echo Student::getScore();10.2 預定義方法
| __set() | 對所用私有屬性能進行賦值操作 | 可在外部調用 | 
| __get() | 對所用私有屬性能進行獲取操作 | 可在外部調用 | 
| __isset() | 檢查私有屬性是否存在 | 可在外部調用 | 
| __unset() | 刪除對象中私有屬性的方法 | 可在外部調用 | 
10.3 常見的關鍵字和魔術方法
- final:可加在類或方法前,表示類不能被繼承、方法不能被覆蓋。但不能標識成員屬性。
- static:用來表示屬性和方法,多個對象之間共享,類似于全局變量。訪問靜態變量:Person::$count
- 單例設計模式:一個類只實例化一個對象。
- const關鍵字:將類的成員屬性定義為常量
- instanceof關鍵字:判斷一個對象是類的實例、類的子類,還是實現了某個特定接口。
- 克隆對象:使用clone關鍵字創建一個對象的副本,改變原對象不影響副本,例如:$p2 = clone $p1;
- 類中的通用方法: - __toString():獲取對象的字符串表示
- __call():調用對象不存在的方法就會自動調用call()方法,并且程序可以繼續向下執行。
- __autoload()全局函數提供了類的自動加載功能
- serialize():對象串行化
 
10.4 抽象類與接口
- 抽象類:
- 接口
- 只能繼承一個類,但可實現多個接口。
第11章 字符串處理
- 常用的字符串處理函數
| sprintf() | 將格式化的字符串以返回值的形式寫入一個變量中 | 
| ltrim() | 從字符串左側刪除空格或其它預定義字符 | 
| trim() | 從字符串的兩端刪除空白字符和其它預定義字符 | 
| strtolower() | 把字符串轉換為小寫 | 
| strtoupper() | 把字符串轉換為大寫 | 
| strrev() | 反轉字符串 | 
| md5() | 將一個字符串進行MD5計算 | 
| strcmp() | 按字節順序進行字符串的比較 | 
第12章 正則表達式
12.1 正則表達式語法
| * | 匹配0次、1次或多次前面的字符 | 
| + | 匹配1次或多次前面的字符 | 
| ? | 匹配0次或1次前面的字符 | 
| . | 匹配除了換行符外的任意一個字符 | 
| {n} | 表示前面的字符恰好出現了n次 | 
| {n,m} | 表示前面的字符至少出現n次,最多出現m次 | 
| ^或\A | 匹配輸入字符串的開始位置 | 
| $或\Z | 匹配輸入字符串的結束位置 | 
| \b | 匹配單詞的邊界 | 
| \B | 匹配除單詞邊界以外的部分 | 
| [ ] | 匹配方括號中指定的任意一個字符 | 
| [ ^ ] | 匹配除方括號中的字符以外的任意一個字符 | 
| () | 模式單元,即由多個字符組成的匹配單元 | 
12.2 與Perl兼容的正則表達式
- preg_match():對字符串進行搜素和匹配一次。
- perl_grep():匹配數組中的元素,返回正則表達式匹配的數組單元。
- preg_replace():執行正則表達式的搜素和替換。
第13章 PHP的錯誤和異常處理
13.1 錯誤處理
- openlog():打開一個和當前系統中日志器的連接
- syslog():向系統日志中發送一個定制消息
- closelog():向系統日志中發送完成定制消息以后調用。
13.2 異常處理
- 使用try catch語句塊,可捕獲多個異常
- 擴展異常處理類
第14章 PHP的日期和時間
- 常用的日期處理函數
| mktime() | 將日期和時間轉變為UNIX時間戳 | 
| getdate() | 返回一個由時間戳組成的關聯數組 | 
| microtime() | 返回當前UNIX時間戳和微秒數 | 
第15-19章略
第20章 PHP訪問MySQL
- 連接MySQL,例如:$link = mysql_connect(“localhost”, “root”, “123456”);
- 輸出版本信息:echo mysql_get_server_info();
- 選擇數據庫:mysql_select_db(“mysql”);
- 插入數據:mysql_query(“insert into qgl_my_user(id,name,age,type) values (2, ‘Swift’, 22, 5)”);
- 更新數據:mysql_query(“update qgl_my_user set age = 29 where type = 3”);
- 刪除數據:mysql_query(“delete from qgl_my_user where type = 3”);
- 查詢數據:$result = mysql_query(“select id,name,age,type from qgl_my_user”);
- 獲取查詢結果 - 從結果集中獲取行數:mysql_num_rows($result);
- 從結果集中獲取列數:mysql_num_fields($result);
- 將一條結果以普通索引數組的形式保存:mysql_fetch_row($result);
- 將一條結果以普通關聯數組的形式保存:mysql_fetch_assoc($result);
 
總結
以上是生活随笔為你收集整理的《细说PHP》读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: getAndIncrement中使用ca
- 下一篇: 使用postman发送HttpServl
