php变量名大小写细节、常量注意点、静态变量的底层分析

php大小问题

类,方法名,函数名是不区分大小写的

变量,常量,数组的键名等其他是区分大小写的

win下目录不区分小写,linux下目录区分大小写

null、true、false不区分大小写

魔术常量不区分大小写,推荐大写

总的来说,不要随意,按psr4的命名规范使用,养成良好的编程习惯

常量

const 常量

  • 在定义时必须被初始值
  • 前面不加任何修饰符
  • 变量名字母一般都大写
  • 常量可以被子类继承
  • 一个常量是属于一个类的,而不是某个对象的
  • 和define的区别

用法一:const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义,const可在类中使用,define不能。
用法二:const定义的常量大小写敏感,而define可通过第三个参数(为TRUE表示大小写不敏感)来指定大小写是否敏感。在运行时定义一个常量。define(‘TXE’,100,TRUE);
用法三:const不能在条件语句中定义常量,而define函数可以。if($a>10){define('LE','hello');}

注意:
php5.x版的define函数对常量的名字没有做严格的检测
在这里插入图片描述
不过就算也没法直接echo或引用,因为词法或语法分析通不过.
还有手册没有提到的这点:
在这里插入图片描述

常量为啥全局有效?
因为常量的哈希表只有一个
底层查看EG(zend_constants),都是往同一个符号表添加的
EG是获取一个符号表

变量,每调用一次函数,生成一个独立的符号表

静态变量和静态属性

就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。

为啥静态变量只有一份,大致用底层分析分析一下:
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值