程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 快速掌握PHP檢查語法錯誤技巧

快速掌握PHP檢查語法錯誤技巧

編輯:關於PHP編程

錯誤抑制符去掉錯誤信息,eval和echo一樣並不是函數,不能使用變量函數的方法調用比如:

$func = ‘eval’

$func()這樣的調用就是無效的。它會提示沒有eval函數,如果你自己定義這麼一個函數也是有問題的。因為eval是一個關鍵字。
eval調用和include差不多,如果被包含文件中沒有明確return就返回null。如果直接eval我們需要檢查的文件會造成被檢查的文件內代碼被執行,這可不是我們想要的,我們只需要檢查一下這個文件的語法是否正確。 我們可以在要檢查的文件之前添加return 語句,讓代碼提前跳出,那麼後面的代碼就不會執行了。好的,就這麼干。代碼如下:

  1. < ?PHP  
  2. if(!function_exists('PHP_check_syntax')) {  
  3. function PHP_check_syntax($file_name, 
    &$error_message = null) {  
  4. $file_content = file_get_contents($file_name);  
  5. $check_code = "return true; ?>";   
  6. $file_content = $check_code . 
    $file_content . "< ?PHP ";  
  7. if(!@eval($file_content)) {  
  8. $error_message = "file: " . 
    realpath($file_name) . " have syntax error";  
  9. return false;  
  10. }  
  11. return true;  
  12. }  
  13. }  
  14. if(!PHP_check_syntax("file.PHP", $msg)) {  
  15. echo $msg;  
  16. }  
  17. else {  
  18. echo "Woohoo, OK!";  
  19. }  
  20. < ?PHP  
  21. foreach:: a => b  
  22. ?>  

因為Parse error 是沒法被 set_error_handler處理函數處理的。這個異常沒辦法catch到。所以才使用了@來抑制錯誤。這帶來的問題就是我們無法得到詳細的錯誤信息。 不過目前我需要的功能也只是檢查語法是否正確。不正確的話重新編譯模板文件,就這麼簡單,至於語法錯誤,在顯示網頁的時候自然會看得到。

PHP檢查語法錯誤最好的辦法就是這個被遺棄的PHP_check_syntax這個方法回到PHP中。下次再研究下他們是出於什麼原因把這個函數去掉的。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved