Capital letters in class name PHP

五迷三道 提交于 2019-11-27 22:47:11

PHP is case insensitive for the class naming. it means you can normally do $file = new file() even if the class is named File and vice-versa.

Are you by any chance relying on the auto loading of class files ? If this is the case, it is possible that depending on the computer, the interpreter don't always find the same file first. This will explain the problem.

I strongly suggest that you rename your classes. It's always a bad idea to rely on case to differentiate two different things and by convention, class names always start with a capital letter.

If you can't change the class names, I suggest to have a look at php namespaces.

edorian

Classnames in PHP are not case sensitive (that doesn't depend on the operating system)

class myclass {}

$x = new MYclaSS;

var_dump($x);

object(myclass)#1 (0) {
}

so as general advice: You shouldn't start and try to mix something there :)

Code like this should not work:

class ab {}

class AB {}

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

I guess you are using some kind of lazy loading for class files, may be you are programming in a PHP framework. The secret will lie in your __autoload function. Find it.

Check PHP manual for Autoloading.

The following code:

<?php

class file {
    public $a;
}

class File {
    public $a2;
}

$x = new file();

Gives an error: Cannot redeclare class File so again, the trick might be which file is included.

Behavior of your code displays that one of the classes isn't being loaded (otherwise you'll see class redeclare error). It is probably the auto loader that first loads the file class and then when it finds definition to File it simply assumes that that it has already loaded the class (due to case insensitive behavior of PHP).

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!