PHP函数区分大小写吗?

时间:2011-04-13 01:32:00

标签: php function case-sensitive

我正在挖掘一些代码,然后我发现了对mySQL_fetch_array的一些调用。 PHP对函数名称是否区分大小写?我记得在某个地方看过这个,但似乎找不到任何参考。

8 个答案:

答案 0 :(得分:96)

我引用this

  

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

因此,它看起来像用户定义的函数不区分大小写,有一个vote用于使PHP5下的函数/对象区分大小写。

答案 1 :(得分:32)

否。

PHP函数区分大小写。

答案 2 :(得分:18)

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 {
   ...
}

自动加载器功能(__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等。

答案 3 :(得分:7)

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

但是,变量 区分大小写。

答案 4 :(得分:3)

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

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

答案 5 :(得分:2)

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

<?php
       class C { 

           public function method() { } 

           public function METHOD() { } 
       }

输出:

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

答案 6 :(得分:1)

总结每个人的回应。 尽管 PHP在所有实例中都不需要字符大小写的一致性,即使到现在为止在PHP5中也是如此。

最佳做法是

  

在引用回任何变量时总是使用相同的情况('强制性')   或功能(其'可选,但建议)。

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

希望它无论如何都有帮助。

答案 7 :(得分:-2)

可能为时已晚,但......

每个人都已经知道:PHP引擎不关心字母&#39;情况下。

并且有关于PHP bugtracker的投票,其中多数人说:&#34;是的,我是专业案例&#34;。

但我很反对,因为在我的MVC框架中,我称之为控制器动作:

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

$ controller和$ action从URL中取出。

想想,如果用户发布了指向我网站的链接: https://my-site/MyPartnerController/MyPartnerGallery

class被命名为myPartnerController ...

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

是的,我总是使用声明的代码中的所有名称。但我祈祷他们永远不会发挥作用。和班级&#39;名称区分大小写。

谢谢!