《PHP Cookbook》學習筆記(三)

2021-05-22 18:52:26 字數 2496 閱讀 6356

七、類和物件

1、如果用echo或print語句輸出乙個物件,php就會呼叫這個物件的__tostring()方法,如下:

輸出如下:

linglongwunv [email protected]

2、php5拷貝的是物件的引用而不是值。當把乙個現存的物件指定給乙個新變數時,新變數中儲存的只是這個現存物件的引用。而不管是通過新變數還是舊變數來訪問這個物件,都會得到相同的結果。要拷貝物件的值,要使用clone:

3、使用魔術方法——__get()和__set()來攔截對屬性的請求。

4、呼叫父類構造器parent::__construct();,這種簡化得益於php5對構造器實行的一致的命名方案。

5、pathinfo():返回乙個關聯陣列包含有檔案路徑的資訊,包括一下陣列單元:dirname,basename和extension。

6、is_resource():檢測變數是否為資源型別。

7、func_num_args():返回函式的引數個數,用在函式內部,5.3後在include中返回錯誤。

8、即使以下**中的語法結構對於非常量表示式而言是合法的(如$class->pi),但對於常量仍然會產生錯誤解析:

9、為獲得對類的快速預覽,呼叫reflection::export():

靜態方法reflection::export()將乙個reflectionclass類的技巧作為引數,返回了豐富的資訊。

10、使用__autoload()魔術方法在物件技巧化期間自動地載入類檔案,下面是如何在指令碼中包含所有需要的類的例項:

這樣,當我們技巧化乙個new person時,它就會在包含路徑中查詢並載入person.php檔案。但是,如果person.php再次使用__autoload會產生錯誤。

八、web基礎

1、cookie是隨著http頭部一起傳送的,所以如果沒有使用輸出緩衝,那麼必須在生成任何輸出之前呼叫setcookie()。

(1)如果setcookie()的第三個引數丟失了(或留空),那麼cookie就會在瀏覽器關閉的時候過期。

(2)setcookie()的第四個引數是乙個路徑,只有在被請求的頁面路徑以指定的字串開頭的情況下,cookie才會被傳送會伺服器。

(3)setcookie()的第五個引數是乙個網域名稱。只有當被請求頁面的主機名以指定的網域名稱結尾時,cookie才會被傳送回伺服器。例如:

如果上面設定的第乙個cookie中只使用了example.com而不是.exaple.com,那麼這個cookie只能發回到唯一的主機example.com(而不是www.example.com或linglongwunv.example.com)。如果在呼叫setcookie()時沒有指定網域名稱,那麼瀏覽器則只有在請求的主機名與設定cookie的主機名相同時,才會發回cookie。

(4)setcookie()的最後乙個可選引數是乙個安全標記,如果將其設為true,表示瀏覽器只能以ssl連線的方式傳送cookie。如果cookie中包含敏感的資訊,使用這個選項會有一些用處,但是不要忘了cookie中的資料可能仍然是以未加密的純文字形式儲存在使用者的計算機上。

(5)在呼叫setcookie()時在第二個引數的位置使用空值,並傳遞乙個已經過期的時間引數,可以刪除cookie。

2、get_browser()只能告訴你瀏覽器是否支援那些功能,而不會告訴你使用者是否關閉了該功能。

3、http_build_query():生成url-encode之後的請求字串。

4、flush()函式會把php內部緩衝的所有輸出傳送到web伺服器,而web服務會在資料到達瀏覽器之前提供它自己的內部延遲緩衝。

九、表單

2、使用isset()、strlen()、is_array(),以便完成最嚴格的表單驗證。

3、用ctype_digit()驗證數字:

(1)$_get和$_post中的值始終是字串。

(2)要保證在將值傳遞給ctype_digit()之前,要先驗證一下輸入是否為空。

(3)ctype_digit()不是很靈活,只能用於驗證數字,對於負數和小數無能為力。

(4)ctype_digit()函式不論比型別轉換還是比正規表示式的速度都要快得多,所以如果該函式能滿足的你的需要,它還是首選。

4、strval():獲取變數的字串值。

(1)使用非常簡單的正規表示式的效率與使用型別轉換函式是沒有什麼差別的。

(2)正規表示式也可以處理php無法在不損失精度的前提下儲存的有效浮點數。

5、web瀏覽器不會讓你自己在下拉列表中生成選項,雖然如此,也要記住傳送到你的php程式的請求不一定來自乙個行為規範的瀏覽器。即使在多數使用者不會出現差錯的環境中,也需要驗證輸入。

6、array_intersect():計算陣列的交集。返回乙個陣列,該陣列包含了所有在array1中也同時出現在所有其它引數陣列中的值,鍵名保留不變。

7、使用uniqid()和md5函式在表單中插入乙個值為唯一id的字段。

8、如果有乙個表單輸入元素名字為linglong.wunv,那麼在php中就需要以$_get['linglong_wunv']或$_post['linglong_wunv']來訪問它。

《PHP Cookbook》學習筆記(四)

1 在與bindcolumn 組合使用的時候,pdo fetch bound取出模式可以讓你設定變數,這些變數的值會在每次呼叫fetch 時自動更新,如下所示 每當呼叫fetch 時,symbol和 planet都會被賦予新值。注意,在bindcolumn 中既可以使用列名也可以使用列數。列數從1開...

PHP Cookbook讀書筆記 第23章檔案

概述 檔案是在web應用中經常會碰到的乙個部分,本章主要包括如何在php中開啟 關閉和操縱檔案,以及在開啟檔案後能夠對檔案做哪些處理等內容。建立或開啟乙個本地檔案 可以用fopen 函式開啟 建立乙個本地檔案 fh fopen file.txt rb or die can t open file.t...

學習筆記 雜湊學習筆記

hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...