奇怪的PHP自动加载问题

时间:2012-03-02 19:45:54

标签: php class function datetime autoload

我有一些看起来像

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

从具有自动加载功能的内部文件中调用此方法

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');
    }
}

如您所知,DateTime是PHP的内置类。问题是,脚本尝试从类文件夹加载它。此方法在我的本地服务器中工作,但远程Web服务器在返回后死亡。

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

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

1 个答案:

答案 0 :(得分:7)

您的方法getTime()可能会尝试解析当前DateTime中的namespace课程。

如果您希望使用内置的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');
}