PHP小知識點

        1  PHP函數中不能直接訪問全局變量, 例以下面的函數訪問不到全局變量$HTTP_RAW_POST_DATAphp

function getPostData(){
    $data = $HTTP_RAW_POST_DATA;
    return $data;
}

        解決這個問題的方式有兩種:linux

  •     在函數的開頭使用global關鍵字聲明全局變量, 使用這種方式修改後的函數以下:
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

未完,待續。。。數組

相關文章
相關標籤/搜索