一直觉得PHP中各种大小写规则理不清,就连工作多年的老手们也不一定能对PHP大小写敏感问题足够了解。在PHP中,大小写敏感问题的处理比较乱,大家一定要注意。即使某些地方大小写不敏感,但在编程过程中能始终坚持“大小写敏感”是最好不过的。下面整理了一些大小写问题注意点:

大小写敏感

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

<?php
$abc = 'abc';
echo $abc; //输出'abc'
echo $aBc; //无输出
echo $ABC; //无输出
?>

2、常量名区分大小写

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

<?php
define('BLOGGER','Veitor');
echo BLOGGER; //输出'Veitor'
echo BLOgger; //报NOTICE提示,并输出'BLOgger'
echo blogger; //报NOTICE提示,并输出'blogger'
?>

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

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

大小写不敏感

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

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

<?php
class Test
{
static public function Ceshi()
{
echo '123';
} public funcion Dxx()
{
echo '321';
}
} $obj = new Test;
$obj->Dxx(); //成功实例化Test类,并调用Dxx方法输出'321'
$obj->dxx(); //成功实例化Test类,并调用Dxx方法输出'321'
$obj = new test;
$obj->Dxx(); //成功实例化Test类,并调用Dxx方法输出'321'
$obj->dxx(); //成功实例化Test类,并调用Dxx方法输出'321' Test::Ceshi(); //输出'123'
test::Ceshi(); //输出'123'
Test::ceshi(); //输出'123'
test::ceshi(); //输出'123'
?>

2、魔术常量不区分大小写

一些魔术常量包括:__LINE__、__FILE__、__DIR__、__FUNCTION__、__CLASS__、__METHOD__、 __NAMESPACE__等都不区分大小写。

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

3、 NULL、TRUE、FALSE不区分大小写

这个知道的人应该比较多就不举例了。

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

如这些

(int),(integer) – 转换成整型
(bool),(boolean) – 转换成布尔型
(float),(double),(real) – 转换成浮点型
(string) – 转换成字符串
(array) – 转换成数组
(object) – 转换成对象

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

总的来说,容易搞不明白的就是变量、常量、类名、方法名和函数名,把这些记住对自己会有帮助的。

PHP命名大小写敏感规则的更多相关文章

  1. Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

    Caliburn.Micro学习笔记目录 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详 ...

  2. CSS命名规范(规则)常用的CSS命名规则

    CSS命名规范(规则)常用的CSS命名规则   CSS命名规范(规则)常用的CSS命名规则   头:header   内容:content/container   尾:footer ...

  3. php中类文件名的命名的规则是什么

    php中类文件名的命名的规则是什么 一.总结 一句话总结:类库文件(工具类)类文件都是以.class.php为后缀. 1.类的方法和属性的命名规则是怎样的? 都是小驼峰法 方法的命名使用驼峰法,并且首 ...

  4. Objective-C中的一些方法命名“潜规则”

    在基于Apple Xcode的Objective-C中,有一些方法命名潜规则,比如就property而言,假定你定义了如下property: @interface MyObject @property ...

  5. 前端传数据到后台,后台用实体类接收不到引发的思考----Java bean中字段命名潜规则

    1.按照Java语法规范,通常在实体类中的属性,首字母都是小写的.这是由于JavaBean的规范导致的.一般JavaBean属性都是首字母小写,以驼峰命名格式命名,相应的 getter/setter ...

  6. java中包命名常见规则

    做java的都知道java的包.类.接口.枚举.方法.常量.变量等等模型都有一套约定的命名规则! 学习每一种语言都应该学习对应语法和命名规则,以保持一个良好的编码风格.一来显示自己的专业.二来方便阅读 ...

  7. 【C#】复制物体后,给副本命名的规则——用正则表达式

    需求:已经实现物体复制功能后,给新生成的副本进行命名. 问题:因为副本也能被复制,即副本的副本,所以复制品的命名规则会如下图所示. 尝试过用for循环和递归,发现在for循环内部递归返回的话会有问题, ...

  8. java变量的命名使用规则

    1.环境变量通常是指在操作系统中,用来指定操作系统运行时需要的一些参数 2.变量名以字母.下划线或者美元符(4上面的¥)开头,不能以数字开头,后面跟字母.下划线.美元符.数字,变量名对大小写敏感,无长 ...

  9. C#泛型命名潜规则

    public class List<T>{} public class LinkedList<T>{} public class SortedList<TKey,TVal ...

随机推荐

  1. VLAN虚拟局域网技术(三)-计算机网络

    本文主要知识来源于学校课程,部分知识来自于H3C公司教材,未经许可,禁止转载.如需转载,请联系作者并注明出处. 本节主要介绍 pVLAN和 动态VLAN. 1.   pVLAN:英文全称Private ...

  2. [干货]兼容HTML5的Placeholder属性-更新版v0.10102013

    HTML5对Web Form做了许多增强,比如input新增的type类型.Form Validation等.Placeholder是HTML5新增的另一个属性,当input或者textarea设置了 ...

  3. ES6 generator 基础

    参考文档 harmony:generators Generator是ES6的新特性,通过yield关键字,可以让函数的执行流挂起,那么便为改变执行流程提供了可能. 创建Generator functi ...

  4. poj-1986 Distance Queries(lca+ST+dfs)

    题目链接: Distance Queries Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 11531   Accepted ...

  5. Could not load the "xxx.png" image referenced from a nib in the bundle with identifier "com.xxxx"

    打印台logs:  Could not load the "xxx.png" image referenced from a nib in the bundle with iden ...

  6. BrowserSync(省时的浏览器同步测试工具)

    第一步:安装node 第二步:安装BrowserSync npm install -g browser-sync 第三部:启动BrowserSync 假如我在D盘建立一个文件test,里面分别包括in ...

  7. 基于OpenCV的面部交换

    需要装python库 OpenCV dlib docopt(根据打开方式选择是否装) # -*- coding: UTF-8 #本电脑试运行 命令 python F:\python_project\s ...

  8. iOS 自定义UINavigationController返回按钮

    主要代码如下: //自定义导航栏返回按钮 self.navigationItem.leftBarButtonItem = ({ //导航栏返回背景视图 UIView *view = [[UIView ...

  9. Java 打包成exe安装包

    1.在eclipse中导出Runnable JAR file 2.选择主函数所在的类和输出位置后finish: 3.这里选择的打包工具是exe4j,在网上找序列号注册一下,否则在打完后在exe运行时, ...

  10. ClientSocket.h ClientSocket.cpp

    ClientSocket.h #pragma once // CClientSocket 命令目标 #include "ClientProDlg.h" #include " ...