PHPのドキュメントによると、class_exists()
大文字と小文字は区別されません。しかし、私はそうなっていることを経験しています。たとえば、class_exists("\\My\\Class")
trueを返しますが、class_exists("\\My\\class")
falseを返します。
PHP5.3.3を実行しています。私は2つの別々の環境を持っています。これは一方の環境では正しく機能していますが、もう一方の環境はケースを気にするように動作しています。
私は何が欠けていますか?どこかに設定設定はありますか?
アップデート:
この問題を経験している他の人のために、私は問題を見つけました。class_exists()
宣言されていないクラスにはオートローダーを使用します。class_exists()
によって返されるリストにクラスが表示されている限り、大文字と小文字は区別されませんget_declared_classes()
。ただし、探しているクラスがこのリストに表示されない場合は、登録されているオートローダースタックに依存して検索します。file_exists()
私のプロジェクトが使用しているオートローダーはSymfony2のUniversalClassLoaderであり、最終的にはクラスのオートロードに依存しています。file_exists()
システムの環境で大文字と小文字が区別される限り、大文字と小文字が区別されます。これが、一方の環境で問題が発生し、もう一方の環境では問題が発生しなかった理由です。大文字と小文字を区別しないオートローダーを追加することで、この問題を解決する方法はたくさんあります。大文字と小文字を区別しない良い例もいくつかありますfile_exists()
ドキュメントコメントの実装。
問題を効果的に伝えず、実際のコードの代わりに疑似例を提供することで、皆さんの時間を無駄にしてしまったことを心からお詫び申し上げます。私の問題の核心にたどり着くという私の意図ではなく、私の疑似例は気を散らすものでした。私は失敗しました、そしてそのために私は本当に申し訳ありません。