php 属性区分大小写,PHP函数区分大小写吗?

本文讨论了在PHP中类名称不区分大小写的规定,以及由此可能引发的自动加载问题。当使用区分大小写的文件系统时,类文件的命名必须与类名大小写一致,否则会导致自动加载失败。解决方法包括在自动加载器中使用strtolower()函数转换类名,或者确保类文件名与类声明时的大小写相同。强调遵循统一的命名规范以避免此类问题。
摘要由CSDN通过智能技术生成

TL; DR:类名称不区分大小写,但始终使用与声明中相同的大小写(与函数相同)。 此外,在定义具有不同大小写的类时可能会导致自动加载器出现问题。

此外,类名不区分大小写:

class SomeThing {

public $x = 'foo';

}

$a = new SomeThing();

$b = new something();

$c = new sOmEtHING();

var_dump($a, $b, $c);

这输出:

class SomeThing#1 (1) {

public $x =>

string(3) "foo"

}

class SomeThing#2 (1) {

public $x =>

string(3) "foo"

}

class SomeThing#3 (1) {

public $x =>

string(3) "foo"

}

问题是使用自动加载器和区分大小写的文件系统(如ext2 / 3/4),因为你必须使用相同的情况调用类名,包含类的文件被命名(而不是类名实际如何被命名), 或使用strtolower:

类文件:

// filename something.php

class SomeThing {

...

}

自动装带器功能(strtolower()或注册strtolower的功能)

function my_autloader($className) {

$filename = CLASSES_DIR . DIRECTORY_SEPARATOR . $className . '.php';

if (file_exists($filename)) {

require($filename);

}

}

现在有了这段代码:

$a = new something(); // works

$b = new SomeThing(); // does not work

$c = new SOMETHING(); // does not work

如果您在自动加载器代码中添加了对strtolower()的调用,那么您可以使这项工作(即使用自动加载器有效地区分大小写的类名),但与函数一样,最好以与声明它相同的方式引用类 ,使用与类名称相同的大小写的文件名,使用自动加载器,并忘记使用strtolower等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值