升級到PHP5.4.3遇到的一個錯誤

技術小胖子發表於2017-11-09

之前一直用的是PHP 5.3.8,今天升級Nginx,順便把PHP也升級到5.4.3了,然後跑應用出錯了,資訊如下:

  Fatal error: Call-time pass-by-reference has been removed in F:wwwroot……Login.php on line xxxxxxx

這個應用一直跑著沒什麼問題,所以斷定是升級PHP造成的,從字面理解,是呼叫時按引用傳參的功能被移除了,對照原始碼:

出錯行:


  1. $errorCode = $action->login($uid$pass, &$user); 

login方法的定義:


  1. class XXXXXXX { 
  2.     public function login($userName$userPass, &$user = NULL){ 
  3.         //…… 
  4.     } 

按引用傳參,其實只用在定義時指定“&”即可,呼叫時不用寫,只不過一直以來都這麼寫也沒報過錯,看來是5.4版增強了檢查,不允許這種呼叫了。

呼叫時去掉“&”,只保留方法定義中的“&”,這次一切OK了。

 

     本文轉自 BoyTNT 51CTO部落格,原文連結:http://blog.51cto.com/boytnt/882292,如需轉載請自行聯絡原作者


相關文章