Странная проблема с автозагрузкой PHP - PullRequest
4 голосов
/ 02 марта 2012

У меня есть какой-то метод, который выглядит так

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. Проблема в том, что скрипт пытается загрузить его из папки классов. Этот метод работает на моем локальном сервере, но удаленный веб-сервер отключается со следующим возвратом

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

Что я могу сделать в этом случае?

1 Ответ

7 голосов
/ 07 июля 2012

Возможно, ваш метод getTime() пытается разрешить класс DateTime в вашем текущем namespace.

Если вы хотите использовать встроенный класс DateTime, вам придется обратиться к глобальному пространству имен .

Из этого:

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