PHP函数是否区分大小写?

我正在挖掘一些代码,并且发现了一些对mySQL_fetch_array调用。 PHP对函数名称是否区分大小写? 我记得在某处读过这篇文章,但似乎无法find任何参考。

我从这引用:

注意:函数名是不区分大小写的,尽pipe调用函数的声明通常是很好的forms。

所以,它看起来像用户定义的函数是不区分大小写的,有一个投票权让PHP5下的函数/对象区分大小写。

没有。

PHP函数区分大小写。

TL; DR:类名不区分大小写,但总是使用与声明中相同的大小写(与函数相同)。 另外,实例化不同大小写的类可能会导致自动加载器出现问题。


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

 <?php 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

类文件:

 <?php // filename something.php class SomeThing { ... } 

自动加载器function( __autoload或用于注册到spl_autoload_register的函数)

 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和喜欢。

不,他们区分大小写,但是,您应该始终使用手册中的案例来保持一致性。

但是,variables区分大小写的。

在PHP中,variables是区分大小写的,但函数没有这样的问题。你可以使用下面的语句来显示输出,所有的都会显示相同的结果。

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

另一方面,如果您要更改variables的区分大小写,那么它将显示错误。

例:

 <?php $a=5; echo $A;// It will show the error. ?> 

输出:

 Notice: Undefined variable: A in C:\xampp\htdocs\test.php on line 3 

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

 <?php class C { public function method() { } public function METHOD() { } } 

输出:

 PHP Fatal error: Cannot redeclare C::METHOD() in ....php on line 6 

总结每个人的回应。 尽pipePHP在所有情况下都不需要字符大小写一致性,即使在PHP5中也是如此。

最好的做法是

当参考variables(它的强制性)或函数(它的可选,但是推荐)时总是使用相同的情况。

你永远也不会知道,也许有一天投票通过,你将保存几年前在你的PHP应用程序需要更新的应用程序变化案件的整个噩梦。

希望它有助于无论如何。

可能是为时已晚,但…

大家已经知道这里了:PHP引擎不关心字母的情况。

还有就是PHP bugtracker的投票,大部分都是这样说的:“是的,我是亲例子。

但是我反对,因为在我的MVC框架中,我打电话给控制器操作:

  $currentController = new $controller($parameters); $currentAction = $currentController->{$action}(); 

$控制器和$动作是从URL原样。

想想,如果用户发布了一个链接到我的网站: https://我的网站/ MyPartnerController / MyPartnerGallery

而类被命名为myPartnerController …

这意味着如果PHP的类和函数名称区分大小写,那么没有人会获得这个页面。

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

谢谢!