PHP 大小写是否敏感问题

老牛浏览 457评论 0发表于

1. 大小写敏感

1.1 变量名区分大小写

所有变量均区分大小写,包括普通变量以及 $_GET$_POST$_REQUEST$_COOKIE$_SESSION$_FILES$_ENV$GLOBALS 等。

php
$abc = 'abcd';
echo $abc; // 输出 abcd

echo $aBc; // 无输出,并报错 Notice: Undefined variable
echo $ABC; // 无输出,并报错 Notice: Undefined variable

1.2 常量名区分大小写

使用 define 定义的常量是区分大写的。

php
define('ABC', 'Hello, world!');
echo ABC; // 输出 Hello, world!
echo abc; // 输出 abc,并报错 Notice: Use of undefined constant

1.3 数组索引(键名)区分大小写

php
$arr = array('one' => 'first');
echo $arr['one']; // 输出 first
echo $arr['One']; // 无输出,并报错 Notice: Undefined index
echo $Arr['one']; // 上面讲过,变量名区分大小写,所以无输出并报错 Notice: Undefined index

2. 大小写不敏感

2.1 函数名、方法名、类名不区分大小写

虽然这些不区分大小写,但坚持「大小写敏感」原则,建议还是使用与定义时相同大小写的名字。

php
class Foo
{
    public static function bar()
    {
        echo 'bar';
    }

    public function baz()
    {
        echo 'baz';
    }
}

$obj = new Foo(); // 成功实例化
$obj->baz(); // 输出 baz
$obj->Baz(); // 输出 baz

$obj = new foo(); // 成功实例化
$obj->baz(); // 输出 baz
$obj->Baz(); // 输出 baz

Foo::bar(); // 输出 bar
foo::bar(); // 输出 bar
Foo::Bar(); // 输出 bar
foo::Bar(); // 输出 bar

2.2 魔术常量不区分大小写

包括:__LINE____FILE____DIR____FUNCTION____CLASS____METHOD____NAMESPACE__ 等都不区分大小写。

php
<?php
echo __LINE__; // 输出 2
echo __line__; // 输出 3

2.3 NULLTRUEFALSE 不区分大小写

2.4 强制类型转换不区分大小写

如:

类型

说明

(int)(integer)

转换成整型

(bool)(boolean)

转换成布尔型

(float)(double)(real)

转换成浮点型

(string)

转换成字符串

(array)

转换成数组

(object)

转换成对象

一般我们都小写,问题不大。

总体来说,容易搞不明白的就是变量、常量、类名、方法名和函数名,把这些记住就行了。

点赞
收藏
暂无评论,快来发表评论吧~