2011-04-26 4 views
2
if (class_exists('PhpThumb')) { 
    $pt = PhpThumb::getInstance(); 
    $pt->registerPlugin('GdReflectionLib', 'gd'); 
} 


if (in_array('PhpThumb', get_declared_classes())) { 
    $pt = PhpThumb::getInstance(); 
    $pt->registerPlugin('GdReflectionLib', 'gd'); 
} 

これらのコードブロックのいずれかが次のエラーをスロー:でclass_existsはtrueを返しますが、まだクラスが見つからないエラーを取得

誰もが理由を説明することができます:「PHPの致命的なエラークラスのPhpThumb 'が見つかりませんか」?これはPHPのバグですか?

+1

カスタムオートローダーはありますか?エラーを投げずにクラスをロードできないオートローダーは、おそらくこれを生成します。 –

+0

これは以前使用していたサードパーティライブラリにあり、この問題は一度も見られませんでした。オートローダがあるかどうか確認します。しかし、 'get_defined_classes'にはPhpThumbも配列に含まれていますので、オートローダーを経由する必要はないはずです。 – pnomolos

+0

@ frank-farmerフォローアップ:私は** 'get_declared_classes'を意味します** – pnomolos

答えて

0

同じバグがありました。私の場合、問題はクラス名に似ているロシア語と英語の文字が混在していたためでした。

0

私は、新しいバージョンのPHP(5.3.10)で動作するレガシーコードを持っていました。私は仕事をしていないrequire_once()ステートメントをいくつか持っていました。私が変えることができるように、私はそれらに変更を加えて変更しました。

私は以前のバージョンで実行していたので、PHPバージョンと関係があると思います。

0

これは、私が実行していたphpunitクラスで不要なファイルを要求していたときに起こりました。ファイルはそこにありましたが、エラーが発生しました。

しかし、テストのためには、は、には、同じインクルードコールワークが必要です。

私の回避策は2つの設定ファイルを用意することでした。ここで1はクラスファイルを必要とし、2番目のファイルは必要ありません。したがって、必要がない場合は後者を使用します。 (私はLA VIE美しい「CSE ..作成する必要がないことを)1つの余分な小さなファイルと少し不格好

が、致命的なこのmistakefullishで練習に数時間を過ごした後、ここ

0

を問題のブロックを解除エラー...私はこの機能がSPLの自動ロードでは動作しないと認めました!そして、私は最終的に解決策を見つけました:私はクラスファイルの実際のパスを見つけるためにもう少しプロセスを使って 'class_exists()'を 'file_exists()'に置き換えます(私のクラスはファイル名と同じ名前です) 。 お手伝いをしてください。

関連する問題