這兩天在 CI report 上, 一直回報某個 php class not found 的錯誤, 但是怎樣看,
function _autoload($class) {
include $class . '.php';
}
spl_autoload_register('_autoload');
然後把這東西放在 auto_prepend_file 裡面, 就會在每個 request 進來的時候幫你把東西 load 進來了.
--
update: 要注意的是, class name ($class) 要跟檔名一樣, 剛才就遇到同事寫的
class name 是 getXXXX, 但是 filename 是 GetXXXX, 這樣他會抓不到.
那個 class 確實是有被 require 到, 只是用 get_declared_classes() 是看不到的,
現在很多 php framework, 或者 developer 都會叫人不要再用 require_once() 了,
大概也是這種原因吧.
不要再用 require_once(), 那要用什麼? 答案就是 spl_autoload.
用法其實很簡單, 宣告一個 register function,
function _autoload($class) {
include $class . '.php';
}
spl_autoload_register('_autoload');
然後把這東西放在 auto_prepend_file 裡面, 就會在每個 request 進來的時候幫你把東西 load 進來了.
--
update: 要注意的是, class name ($class) 要跟檔名一樣, 剛才就遇到同事寫的
class name 是 getXXXX, 但是 filename 是 GetXXXX, 這樣他會抓不到.