PHP class_exists表示区分大小写

271 阅读1分钟

image.png

根据PHP的文档class_exists()不区分大小写.但是,我正在经历它.例如,class_exists("\My\Class")返回true但class_exists("\My\class")返回false.

我正在运行PHP 5.3.3.我有两个独立的环境.这在一个环境中正常工作,但另一个环境表现得像关心案例.

我错过了什么?某处有配置设置吗?

更新:

对于遇到此问题的其他人,我发现了这个问题.class_exists()将自动加载器用于任何尚未声明的类.class_exists()只要该类出现在返回的列表中,它就会表现为不区分大小写get_declared_classes().但是,如果您要查找的类未显示在此列表中,则它依赖于已注册的自动加载器堆栈来查找它.我的项目使用的自动加载器是Symfony2的UniversalClassLoader,它最终依赖于file_exists()自动加载该类.file_exists()只要系统的环境区分大小写,就区分大小写.这就是我在一个环境而不是另一个环境中看到问题的原因.有许多方法可以通过添加不区分大小写的自动加载器来解决此问题.file_exists()在文档注释中还有一些很好的示例,表示一些不区分大小写的实现.

我真诚地道歉,因为没有有效地传达问题并提供伪示例而不是实际代码而浪费每个人的时间.我的伪示例是一种分心,而不是我打算解决问题的核心.我失败了,为此我真的很抱歉.