类名PHP中的大写字母

类名PHP中的大写字母,php,class,letters,Php,Class,Letters,我的系统中有两个类。一个叫做文件,第二个叫做文件。 在我的本地主机上,当我实例化file时,我得到file对象,但是我的朋友运行相同的脚本得到file对象,就像大写字母无法识别一样,“file”等于“file”。 这是什么东西? 我们都在Windows上运行。我有WampServer,他有XAMPP。PHP中的类名不区分大小写(这不取决于操作系统) 所以作为一般建议:你不应该开始尝试在那里混合一些东西:) 像这样的代码应该不能工作: class ab {} class AB {} Fatal

我的系统中有两个类。一个叫做文件,第二个叫做文件。 在我的本地主机上,当我实例化file时,我得到file对象,但是我的朋友运行相同的脚本得到file对象,就像大写字母无法识别一样,“file”等于“file”。 这是什么东西?
我们都在Windows上运行。我有WampServer,他有XAMPP。

PHP中的类名不区分大小写(这不取决于操作系统)

所以作为一般建议:你不应该开始尝试在那里混合一些东西:)

像这样的代码应该不能工作:

class ab {}

class AB {}

Fatal error: Cannot redeclare class AB in ... on line x

PHP对类命名不区分大小写。这意味着您可以正常执行
$file=newfile()
,即使类名为
file
,反之亦然

您是否有可能依赖于类文件的自动加载?如果是这种情况,那么根据计算机的不同,解释器可能并不总是首先找到相同的文件。这就可以解释问题了

我强烈建议您重命名您的类。依靠大小写来区分两个不同的东西总是一个坏主意,按照惯例,类名总是以大写字母开头


如果您不能更改类名,我建议您看看。

我猜您正在使用某种延迟加载类文件,可能是在PHP框架中编程。秘密在于你的
\u自动加载功能。找到它

检查

以下代码:

<?php

class file {
    public $a;
}

class File {
    public $a2;
}

$x = new file();

你真的不应该这样混用名字,这不能解释为什么他用相同的代码加载一个类和他的朋友加载另一个类。你是对的。扩展了答案,表明如果在一个脚本中同时需要两个类(“file”和“file”),那么这样的代码不应该一起工作。但是,根据提供的信息,我猜不出他在经历什么,只是表明它根本不应该工作。如果使用类加载器,您可以在其中包含两个具有相同类名的文件,并且取决于类加载器,它可以工作。但这只会导致巨大的问题;)但是区分大小写的文件系统上的自动加载程序不会发现您的类以不同的大小写拼写。我的类不会以大写字母开头。。。从来没有,从来没有will@dsdsdsdsd-Y,为什么基本上符合所有标准?
<?php

class file {
    public $a;
}

class File {
    public $a2;
}

$x = new file();