PHP函数是否区分大小写?

PHP函数是否区分大小写?,php,function,case-sensitive,Php,Function,Case Sensitive,我在翻阅一些代码,发现了一些对mySQL\u fetch\u array的调用。PHP对函数名是否区分大小写?我记得在某个地方读过这篇文章,但似乎找不到任何引用。没有。 PHP函数不区分大小写。不,它们不区分大小写,但是,为了保持一致性,您应该始终使用手册中的大小写 但是,变量是区分大小写的。我引用的是: 注意:函数名为 不区分大小写,但通常不区分大小写 调用函数的良好形式 出现在他们的声明中 因此,它看起来用户定义的函数不区分大小写,在PHP5下有一种使函数/对象区分大小写的方法。和方法名也不

我在翻阅一些代码,发现了一些对
mySQL\u fetch\u array
的调用。PHP对函数名是否区分大小写?我记得在某个地方读过这篇文章,但似乎找不到任何引用。

没有。

PHP函数不区分大小写。

不,它们不区分大小写,但是,为了保持一致性,您应该始终使用手册中的大小写

但是,变量是区分大小写的。

我引用的是:

注意:函数名为 不区分大小写,但通常不区分大小写 调用函数的良好形式 出现在他们的声明中


因此,它看起来用户定义的函数不区分大小写,在PHP5下有一种使函数/对象区分大小写的方法。

和方法名也不区分大小写。例如:-

<?php
       class C { 

           public function method() { } 

           public function METHOD() { } 
       }

TL;DR:类名不区分大小写,但始终使用声明中的大小写(与函数中的大小写相同)。此外,实例化定义了不同大小写的类可能会导致自动加载程序出现问题


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

<?php
class SomeThing {
  public $x = 'foo';
}

$a = new SomeThing();
$b = new something();
$c = new sOmEtHING();
var_dump($a, $b, $c);
问题在于使用自动加载器和区分大小写的文件系统(如ext2/3/4),因为您必须使用与包含类的文件命名相同的大小写来调用类名(而不是类名的实际大小写方式),或者使用
strtolower

类文件:

<?php
// filename something.php
class SomeThing {
   ...
}
现在使用此代码:

$a = new something(); // works
$b = new SomeThing(); // does not work
$c = new SOMETHING(); // does not work

如果您在autoloader代码中添加了对
strtolower()
的调用,则可以实现这一点(即使用autoloader有效地实现不区分大小写的类名),但与函数一样,最好以声明类的相同方式引用类,使文件名与类名大小写相同,使用autoloader,忘记使用strtolower等类似的工具。

总结大家的反应。 即使到目前为止,在PHP5中,PHP并不要求所有实例中的字符大小写一致性。

最佳实践将是

当引用回任一变量时,始终使用相同的情况(其“必填项”) 或功能(可选,但推荐)

你永远不知道也许有一天投票通过了,你将省去几年前在你的应用程序中更改需要用PHP更新的案例的噩梦


希望这对你有所帮助。

也许这太晚了,但是

这里大家都知道:PHP引擎不关心字母的大小写

还有对PHP bugtracker的投票,多数人说:“是的,我支持案例敏感性”

但我是相反的,因为在我的MVC框架中,我将控制器操作称为:

    $currentController = new $controller($parameters);
    $currentAction = $currentController->{$action}();
$controller和$action按原样从URL执行

试想,如果用户发布指向我的站点的链接:

当类名为myPartnerController时

这意味着,如果PHP的类和函数名区分大小写,就没有人会获得此页面

是的,我总是使用代码中声明的所有名称。但我祈祷他们永远不要让函数和类的名称区分大小写


谢谢大家!

在PHP中,变量区分大小写,但函数没有类似的问题。您可以使用以下语句显示输出,所有语句都将显示相同的结果

<?php
Echo "This is a test script";
ECHO "This is a test script";
echo "This is a test script";
?>

不,看起来不是。偏好通常较低。不,功能并不是个案敏感的:它被埋葬在中间的一个注释:块。我投票让这个开放-标题是更一般和明确的,因此它可能帮助更多的人。PHP5已经出来了,你唯一的希望是PHP6,我不认为他们会采取这一步骤。我不同意这种说法。最佳实践是保持手册中的情况不变,因此它应该很少中断,同时提高清晰度。哇。这是可悲的。虽然ImAgEcReAtEfRoMpNg()是混淆代码的一种很好的方法……既然引号中说“不区分大小写”,为什么说“看起来用户定义的是区分大小写的”?如果这是一个打字错误,你真的应该纠正它。哇!这是非常好的发现后,7年的编码!关于“保存更改案例的整个噩梦”:不,我的理解是,如果进行了更改,则在php.ini中设置区分大小写是一个选项。这样就保留了向后兼容性。这真的很糟糕。。。如果我去,猜猜你所谓的登录成功函数,我会在里面,或者可以删除一些东西。。。。
$a = new something(); // works
$b = new SomeThing(); // does not work
$c = new SOMETHING(); // does not work
    $currentController = new $controller($parameters);
    $currentAction = $currentController->{$action}();
<?php
Echo "This is a test script";
ECHO "This is a test script";
echo "This is a test script";
?>
<?php
$a=5;
echo $A;// It will show the error.
?>
Notice: Undefined variable: A in C:\xampp\htdocs\test.php on line 3