上一篇文章中介绍了变量(值是可以改变的),今天我们来学习新的东西:常量。变量和常量的最大不同就在于是否可以改变它的值。
简介
常量是一个简单值的标识符(名字)。就跟它名字的含义一样,在脚本执行期间该值不能改变(除了所谓的魔术常量,本质上它们不是常量),大小写敏感,一般都是用大写。
语法
可以使用const关键字或define()函数这两种方法来定义一个常量。我们通过一些示例来了解这两种定义方式的不同点。
定义
const 关键字用于在类内部或脚本的顶层定义常量;
define() 是一个函数,可以在脚本的任何地方定义常量。
<?phpCONST AGE = 18;define("TEST", "test");class people {CONST NAME = 'zhangsan';public function say() {define("LANG", "Chinese");}}
作用域
const:在类内部定义的常量,其作用域是类的内部;在脚本顶层定义的常量,其作用域是全局的。
define():定义的常量总是全局的。
解析的节点
const 常量在脚本编译时(即PHP文件被解析的时候)。
define() 定义的常量则是在执行到定义语句时创建的,因此它是在运行时进行确认和存储的。
预定义常量
除了自定义的常量,PHP还提供了大量的预定义常量供开发人员快速使用。
#示例(部分预定义常量)
<?php//PHP的版本echo PHP_VERSION. PHP_EOL;//执行结果:8.4.2//执行PHP文件的运行模式echo PHP_SAPI. PHP_EOL;//执行结果:cli(这里我使用的是命令行来执行的脚本)//true、false,null这些也是
魔术常量
一些魔术常量会根据使用位置而变化,如__LINE__的值取决于它所在的行,这些常量不区分大小写,并且是在编译时解析而不是执行的时候。
#示例(部分介绍)
<?phpnamespace app;class test {public function test() {//当前文件的完整路径echo __FILE__. PHP_EOL; //D:\soft\phpstudy\phpstudy_pro\WWW\a.com\1.php//当前文件的目录echo __DIR__. PHP_EOL; //D:\soft\phpstudy\phpstudy_pro\WWW\a.com//当前行号echo __LINE__. PHP_EOL; // 9//当前行号echo __LINE__. PHP_EOL; // 11//当前函数echo __FUNCTION__. PHP_EOL; // test//类的方法名echo __METHOD__. PHP_EOL; // app\test::test//当前类名echo __CLASS__. PHP_EOL; // app\test//当前命名空间名称echo __NAMESPACE__. PHP_EOL; // app}}(new test())->test();
完结
如果你在阅读这篇文章时有所收获,请不要忘记点赞评论加关注,你的支持是我创作的最大动力。当然,如果你在文中发现了疏漏之处,或是有着其他的见解,欢迎私信与我交流。
我是老卢,一个热爱分享、不断探索的知识旅者。