1. 程式人生 > >php5.3以後不支援類名做構造方法,名稱空間 加自動引入無法觸發類名構造方法

php5.3以後不支援類名做構造方法,名稱空間 加自動引入無法觸發類名構造方法

今天寫程式碼遇到了一個詭異的問題,搞了好久才發現居然是名稱空間造成的。

php版本 5.6.3

起因

專案用了名稱空間,通過名稱空間 設定 spl_autoload_register  (自動引入) 來載入類。但是載入了一個解密類時不管怎麼除錯 都無法解密出資料。

分析

嘗試了很多次,一開始以為是框架問題。因為把加密類單獨拿出來做測試時可以得到解密的字串的。後來分析了半天  不是框架的問題。而是解密類太古老了 還是用的類名做的構造方法。正好要給這個解析類構造方法傳參  如果用 require 引入類的話 是會觸發 類名構造方法的  但是如果是用 spl_autoload_register 加名稱空間自動引入的類 (必須是 既使用了名稱空間 又使用了自動引入)

是無法觸發類名構造方法的  必須寫成 __construct() 才可以

結尾

往往很多小細節就會導致程式碼出現問題,所以除錯的時候一定要仔細一點。