2012-03-02 30 views
3

我有些看起来像调用来自内部文件这种方法具有自动加载功能奇怪的PHP自动加载的问题

function __autoload($class_name) { 
    global $path; 
    if (file_exists($path['classes'] . ds . 'class.'. $class_name . '.php')) { 
     require_once($path['classes'] . ds . 'class.'. $class_name . '.php'); 
    } else { 
     die($path['classes'] . ds . 'class.'.$class_name . '.php'); 
    } 
} 

正如你知道

public function getTime() { 
    $date = new DateTime(); 
    $date->setTimezone(new DateTimeZone('Europe/Paris')); 
    return $date->format('Y-m-d H:i:s'); 
} 

方法,日期是内置的类PHP。问题是,脚本尝试从类文件夹加载它。此方法在我的本地服务器上工作,但远程web服务器死亡,并返回。

<path to classes folder>/class.DateTime.php

我能在这种情况下怎么办?

+3

你的远程服务器是否有PHP 5.2? – netcoder 2012-03-02 19:48:17

+2

也推荐使用['spl_autoload_register'](http://php.net/manual/en/function.spl-autoload-register.php)来代替魔术'__autoload'方法。 – mrlee 2012-03-02 19:50:32

+3

'global $ path'让我感到难过。 – 2012-03-02 19:50:57

回答

5

可能是您的方法'getTime()'试图解析当前命名空间中的DateTime类。如果你想使用内置的DateTime类,你将不得不refer to the global namespace

public function getTime() { 
    $date = new DateTime(); 
    $date->setTimezone(new DateTimeZone('Europe/Paris')); 
    return $date->format('Y-m-d H:i:s'); 
} 

public function getTime() { 
    $date = new \DateTime(); 
    $date->setTimezone(new \DateTimeZone('Europe/Paris')); 
    return $date->format('Y-m-d H:i:s'); 
}