类名PHP中的大写字母

时间:2011-03-10 13:19:58

标签: php class letters

我的系统中有两个班级。一个叫文件,第二个是File。 在我的本地主机上,当我实例化文件时,我得到文件对象,但我的朋友运行相同的脚本获取文件的对象,如大写字母无法识别,“文件”等于“文件”。 这是一些可配置的东西吗? 我们都在Windows上运行。我有WampServer,他有XAMPP。

3 个答案:

答案 0 :(得分:49)

PHP对类命名不区分大小写。这意味着即使该类名为$file = new file(),您通常也可以File,反之亦然。

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

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

如果您无法更改班级名称,我建议您查看php namespaces

答案 1 :(得分:16)

PHP中的类名不区分大小写(不依赖于操作系统)

class myclass {}

$x = new MYclaSS;

var_dump($x);

object(myclass)#1 (0) {
}

一般建议:你不应该开始尝试在那里混合:)

这样的代码应该工作:

class ab {}

class AB {}

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

答案 2 :(得分:1)

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

检查PHP manual for Autoloading

以下代码:

<?php

class file {
    public $a;
}

class File {
    public $a2;
}

$x = new file();

给出错误:Cannot redeclare class File所以再次,诀窍可能是包含的文件

代码的行为显示其中一个类未加载(否则您将看到 class redeclare error )。可能是自动加载器首先加载file类,然后当它找到File的定义时,它只是假定它已经加载了类(由于PHP的不区分大小写的行为)。 / p>