2011-06-27 11 views
1

私は今日、PHPでいくつかの本当に奇妙なエラーがありました。クラス+クラスが再宣言できませんか?

私はA/Bテストのための小さなクラスを書かれ、私のPHPのドキュメントに新しいインスタンスを作成したいと思っていた:

if(!class_exists('ab_tester')) include('../lib/php/ab_tester.php'); 
$ab = new ab_tester($user['id']); 

一つは、これはトリックを行うべきだと思うだろうが、PHPは言います:

Fatal error: Cannot redeclare class ab_tester in [PATH_TO_PHP]ab_tester.php on line 10 

どうしてですか?

注:ラインab_tester.phpの10は次のようになります。私はインクルードはab_testerの新しいインスタンスを作成し、ラインアウトなどがままにしておくと

class ab_tester { 

、それが吐き出す:

Fatal error: Class 'ab_tester' not found in [PATH_TO_PHP]returning.php on line 25 

今私は何をしますか?私がそれをインポートしようとすると、それは既にそこにあります。

+3

'class ab_tester'はクラスファイルに複数回表示されますか?場合によっては... – BoltClock

+0

いいえ、それはありません。ファイルの先頭にエラーがスローされないと思います。/ –

+0

ファイルの最初の10行を表示できますか? – Eineki

答えて

1

ab_tester.phpの最初の9行のコードにはどのようなものがありますか?

は、私が(とにかく、または含んで)他がclass ab_testerがあることを賭ける

EDIT:

もう一つの可能​​な説明は後でreturning.phpのコードにab_tester.phpのinclude秒をやっているということです。

include_once('../lib/php/ab_tester.php'); 
$ab = new ab_tester($user['id']); 

:あなたは、この特定の行でinclude_onceを使用している場合でもだから、2番目の呼び出しは、まだちょうどinclude ...

+0

いいえ、まったくありません。そのPHPDocを含んでいます。 –

+0

2番目の推測は正しい=] –

0

いかがでしょうか?

+0

include_onceはinclude =>と同じことをやり直すことはできません。私はPHPを使っています。 –

0

includesを使用する代わりに、クラスの自動読み込みをお試しください。

function __autoload($class_name){ 
    $class_name = strtolower($class_name); 
    $path = "../includes/{$class_name}.php"; 
    if(file_exists($path)){ 
     require_once($path); 
    }else{ 
     die("The file {$class_name}.php could not be found."); 
    } 
} 
関連する問題