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