我在查看一些代码时,发现其中有调用mySQL_fetch_array
的语句。PHP中的函数名是否区分大小写?我记得在某处读到过这个问题,但似乎找不到任何相关参考。
我在查看一些代码时,发现其中有调用mySQL_fetch_array
的语句。PHP中的函数名是否区分大小写?我记得在某处读到过这个问题,但似乎找不到任何相关参考。
编号。
PHP函数不区分大小写。
简而言之:类名不区分大小写,但在声明时始终使用相同的大小写(与函数相同)。另外,使用与定义时不同大小写实例化类可能会导致自动加载程序出现问题。
另外,类名不区分大小写:
<?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
等工具。
<?php
class C {
public function method() { }
public function METHOD() { }
}
输出:
PHP Fatal error: Cannot redeclare C::METHOD() in ....php on line 6
在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
$currentController = new $controller($parameters);
$currentAction = $currentController->{$action}();
$controller和$action将直接从URL中获取。
想象一下,如果用户发布了一个指向我的网站的链接: https://my-site/MyPartnerController/MyPartnerGallery
而类名为myPartnerController...
这意味着如果PHP的类和函数名称区分大小写,那么没有人能够访问此页面。
是的,我总是在代码中使用声明的所有名称。但我祈祷他们永远不会使函数和类的名称区分大小写。
谢谢!