1 PHP函數中不能直接訪問全局變量, 例以下面的函數訪問不到全局變量$HTTP_RAW_POST_DATAphp
function getPostData(){ $data = $HTTP_RAW_POST_DATA; return $data; }
解決這個問題的方式有兩種:linux
function getPostData(){ global $HTTP_RAW_POST_DATA; $data = $HTTP_RAW_POST_DATA; return $data; }
經過GLOBALS數組訪問全局變量, 使用這種方式修改後的函數以下:數據庫
function getPostData(){ $data = $GLOBALS['HTTP_RAW_POST_DATA']; return $data; }
2 include, include_once和require, require_once用法:
include(_once)("文件的路徑") 與 require(_once)("文件的路徑"), 路徑能夠用絕對路徑,也能夠用相對路徑,windows下正反斜線均可以,linux下只認正斜線,因此最好用正斜線;
其做用就是用包含進來的文件內容替換 include(_once), require(_once)那一行;
包含進來的文件必須加<?php ?>, 由於在包含時, 首先理解文件內容是普通字符串, 碰到<?php ?> 標籤時, 纔去解釋;
include是包含的意思, 找不到文件時, 會報warning錯誤, 程序繼續執行;
require是必須的意思, 找不到文件時, 會報fatal錯誤, 程序終止執行;
加once後, 系統會進行判斷, 若是已經包含,則不會再包含, 例如:
有一個a.php文件, 內容是<?php $a++ ;?>
在b.php文件中的內容是 $a=5; require_once("a.php"); echo $a; require_once("a.php"); echo $a;
結果第一處輸出6, 第二處輸出6, 說明_once只包含一次, 若是不加once, 第二處輸出的會是7;
若是是關鍵程序, 缺乏了程序沒法運行, 用require, 若是不是關鍵程序, 缺乏了不影響程序正常運行, 能夠用include;
加不加once是效率上的區別, 加上once, 雖然系統幫你考慮了只加載一次, 但系統的判斷會使效率下降, 所以, 更應該在開發之初, 就把目錄結構調整好, 儘可能不要用_once的狀況;
利用include/require返回被包含頁面的返回值, 例如:
a.php頁面中: ..... return $value; b.php頁面中: $v = include("a.php");
3 在類中使用當前對象的屬性和方法,必須使用$this->取值。
4 若是操做數據庫時,中文顯示亂碼,可嘗試在已創建的鏈接上執行"SET NAMES utf8";
5 PHP是一種弱類型語言,即變量不須要聲明爲特定的數據類型,可是PHP仍有類型的概念,每一個賦給變量的值都有一種類型,能夠使用PHP的類型檢測函數來肯定變量的值的類型:
is_bool: 用於檢測變量是不是bool型
is_double: 用於檢測變量是不是雙精度型
is_integer: 用於檢測變量是不是整型
is_string: 用於檢測變量是不是字符串型
is_object: 用於檢測變量是不是對象
is_array: 用於檢測變量是不是數組
is_null: 用於檢測變量是不是null,即未分配的
is_resource: 用於檢測變量是不是資源,即用於識別和處理外部資源的句柄,如數據庫或文件
6 PHP測試變量時,會將一個非空字符串轉換爲true, 例如$var = "false", 那麼if($var)是知足條件的。
7 PHP引入了類的類型提示,能夠約束參數的類型,要增長一個方法或函數的參數類型提示,只須要在參數名前加上類的名稱便可,也能夠用來限制參數爲數據類型,在參數名前加Array便可。類型提示不能約束參數類型爲基本類型。
8 只能經過 "類名:"來訪問類的靜態屬性和方法,不能經過對象來訪問,在類的內部能夠使用"self:"來訪問靜態屬性和方法;定義常量和引用常量都不須要在常量名前加$符號,常量名必須所有大寫,引用常量和引用靜態變量同樣,都使用"類名:"。
9 抽象類必須以"abstract class"聲明,抽象類中的抽象方法以"abstract function"開始聲明,抽象類也能夠聲明並實現非抽象方法,也能夠定義屬性,不能直接實例化抽象類,繼承自抽象類的類必須實現抽象類中聲明的所有抽象方法,不然要以 "abstract class"聲明子類,一個類只能有一個父類。
接口以"interface"聲明,接口中只能聲明方法,不能實現方法,接口中能夠定義屬性,一個類能夠實現多個接口,用implement關鍵字,實現接口的類必須實現接口中聲明的所有方法,不然,要聲明爲abstract類。一個類能夠既繼承自抽象類,也能夠實現接口,extends關鍵字必須在implements關鍵字以前。windows
未完,待續。。。數組