2012-03-02 13 views
3

私はあなたが知っているように、DateTimeのは、ビルトインのクラスであるオートロード機能を持つファイル内からこの方法奇妙な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

+2

魔法の '__autoload'メソッドの代わりに[' spl_autoload_register'](http://php.net/manual/en/functionspl-autoload-register.php)を使うこともお勧めします。 – mrlee

+3

'global $ path'は私を悲しくします。 –

答えて

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