PHP開發知識總結:基礎篇

之前一直用的比較多的是ASP/ASP.NET語言,最近由於整個網站的技術平臺轉向了PHP平臺,這些系統的小修小改和開發新的應用都需PHP語言來編寫了,總結一下近段時間的一些PHP知識點。以備查之用。

1,基礎語法
  PHP的語法都是屬於C系列的,類似C,C#,JAVA等語言,所以一般的語句都大同小異。總結一些特殊的語法形式:
  可變變量(動態變量):
  $var = 'php' ;
  $$var = 'the php var' ;
  echo $php ; //輸出the php var

  字符串中的變量解析:
  $var = 'php' ;
  echo "hello $var" ; //輸出hello php , 爲了不產生解析錯誤,最好再變量上加{}符,即"hello {$var}",詳細的變量解析規則可以參見PHP的變量解析規則文檔。

  單引號和雙引號的區別:
  單,雙引號都可以表示字符串,其區別在於轉義的層次,單引號只轉義\,而雙引號則轉義所有可轉義的特殊字符,所以只表示常規字符,使用單引號比雙引號的速度更快。

   NULL和空值:
  $var ;
  echo isset($var) ? 'not null' : 'null' ;    //輸出 null
  echo empty($var) ? 'empty' : 'not empty' ; //輸出 empty
  
  $var = '' ;
  echo isset($var) ? 'not null' : 'null' ;    //輸出 not null
  echo empty($var) ? 'empty' : 'not empty' ; //輸出 empty
  
  $var = 0 ;
  echo isset($var) ? 'not null' : 'null' ;    //輸出 not null
  echo empty($var) ? 'empty' : 'not empty' ; //輸出 empty
  
   數組的操作技巧
 $arr = array('key1'=>'value1','key2'=>'value2');
 while(list($k,$v) = each($arr))
 {
    echo "$k,$v" ;
 }

  foreach($arr as $k=>$v)
 {
    echo "$k,$v" ;
 }
將數組複製爲變量:
 extract($arr ); //相反的函數是compact() 
 echo "$key1 $key2" ;
 數組判斷:
 echo is_array($arr) ? 'array' : 'not array' ;  //輸出array
 echo gettype($arr) == 'array' ? 'array' : 'not array';//這樣處理也可以,輸出array,不過這樣用法比較少見

變量函數:
 function a()
 {
    echo "the function a" ;
 }
 
 function b($arg)
 {
    echo "$arg" ;
 }
 
 $x = 'a' ;
 $x() ; //輸出the function a
 
 
 $x = 'b' ;
 $x('the function b') ; //輸出the function b

幾個PHP的“魔術常量”:
__LINE__    文件中的當前行號。
__FILE__     文件的完整路徑和文件名。如果用在包含文件中,則返回包含文件名。自PHP4.0.2 起,__FILE__總是包含一個絕對路徑,而在此之前的版本有時會包
含一個相對路徑
__FUNCTION__  函數名稱(PHP4.3.0 新加)。自PHP5 起本常量返回該函數被定義時的名字(區分大小寫)。在PHP4 中該值總是小寫字母的。
__CLASS__  類的名稱(PHP4.3.0 新加)。自PHP5 起本常量返回該類被定義時的名字(區分大小寫)。在PHP4 中該值總是小寫字母的。
__METHOD__   類的方法名(PHP5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。

2,時間的處理
  time() 函數返回的是unix時間戳,其值跟時區設置是無關的。
  date(format,time) : 格式化本地時間,不同的時區設置會返回不同的值
   通過設置php.ini文件的date.timezone=或者在程序文件設置ini_set('date.timezone','Asia/Shanghai');影響其返回值
 
  gmdate(format,time) : 格式化一個 GMT/UTC 日期/時間,返回的是格林威治標準時(GMT)。

  所以最優的處理方式,不是直接設置php.ini或者通過ini_set來指定時區,而是存儲的時time()的值,然後根據指定時區gmdate一個時間,如,顯示中國的時間(與標準相差8小時),則代碼寫法如下:
  echo gmdate('Y-m-d H:i:s', time() + 3600 * 8);

3,魔法引用函數
  魔法引用即是當數據出現' , " ,\時加上轉義字符\。
  php提供了兩個相關的設置:magic_quotes_gpc和magic_quotes_runtime
  具體說明:
magic_quotes_gpc 
作用範圍是:WEB客戶服務端;
作用時間:請求開始是,例如當腳本運行時.

magic_quotes_runtime
作用範圍:從文件中讀取的數據或執行exec()的結果或是從SQL查詢中得到的;
作用時間:每次當腳本訪問運行狀態中產生的數據.

所以
magic_quotes_gpc的設定值將會影響通過Get/Post/Cookies獲得的數據
magic_quotes_runtime的設定值將會影響從文件中讀取的數據或從數據庫查詢得到的數據

   其行爲受到php.ini的設置影響,不同的服務器的php.ini的設置可能不同,所以爲了減少其依賴性,最優的處理方式應爲如下:
   通過set_magic_quotes_runtime(0);禁用運行時轉義
  然後在程序中根據需要轉義和反轉義,如處理表單提交數據時:
  if(!get_magic_quotes_gpc())
  {
        addslashes($_POST['VAR']) ;//如沒有轉義,則使用轉義函數
  }
  在顯示數據時,可通過反轉義stripslashes(),即去掉\,獲得原始形式的數據。

4,錯誤報告
 在程序發佈時,建議在程序開頭加上:
  error_reporting(0) ; //禁用錯誤報告,調試階段可以設爲error_reporting(E_ALL) ;
 

暫時就總結這些,有新的發現時,再更新。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章