php 静态 常量,PHP-面向对象-静态方法/属性及常量属性

本文探讨了PHP中静态变量和常量的生命周期、绑定过程,重点讲解了它们在解释性语言背景下的执行机制,以及在类中静态方法的调用方式。通过实例演示了它们的存储方式和作用域,帮助开发者正确运用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态变量和常量能够长时间的保存在内存中,准确的来说其生存周期是该文件从执行到结束整个过程,而其作用域也是用于在其所在的整个文件之中。这在我们编写程序时,用于跨过多个代码块、及多个作用域的时候会相当有用。

在面向对象编程中,当我们在类中编写了一个静态函数后,我们能够不实例化对象而直接去调用这个静态函数。

这里我很好奇,因为PHP是解释性语言,按照对解释性语言的定义,PHP应该是解释器一边解释一边执行,那么对于在编译过程中就将静态方法与类对应的绑定的过程,在PHP又是怎么样的情况呢? —— 留着之后随着自己不断的学习,慢慢的了解吧。

关于静态方法/属性以及常量属性,我们需要了解的就是其在整个程序运行过程中的生命周期,在程序中的存储方式,以便于我们在工作中能正确的使用这些变量。此外文章最后还对PHP中类中的成员变量的调用方式做了一个简单的总结。

静态变量

常量

值可否改变

否(定义即被赋值,不可被改变,程序运行的过程中不能被改变值)

生命周期

整个程序执行的期间

整个程序执行的期间

作用域

遵循一般的变量作用域,但是程序执行过后并不释放,因此在下次访问所在作用域时,还能访问这个变量

全局可访问

测试代码

// 静态变量作用域测试代码

function count_a(){

static $a = 0; // 只在函数的局部作用域中生效,但是每次调用之后,$a 的值还是被保存着的。虽然不能在作用域之外被调用,但是程序执行过后还是没有没销毁

// 这个值会一直到程序的运行结束

//静态声明是在编译时解析的。

echo 'This is a variable from function: '.$a++.'';

}

for($i = 0; $i < 10; $i++){

count_a();

}

// echo "The value outside function {$a}"; // 此处显示未定义这个变量

// 常量测试代码

echo MAX_NUM; // 常量未定义前不能使用

define('MAX_NUM', 1000);

echo MAX_NUM;

const MIN_NUM = 200;

echo MIN_NUM;

// 以上两种方式都能对常量进行定义

// 但是在类中的使用会有所差异

define('MIN_VALUE', '0.0'); // RIGHT - Works OUTSIDE of a class definition.

define('MAX_VALUE', '1.0'); // RIGHT - Works OUTSIDE of a class definition.

//const MIN_VALUE = 0.0; RIGHT - Works both INSIDE and OUTSIDE of a class definition.

//const MAX_VALUE = 1.0; RIGHT - Works both INSIDE and OUTSIDE of a class definition.

class Constants

{

//define('MIN_VALUE', '0.0'); WRONG - Works OUTSIDE of a class definition.

//define('MAX_VALUE', '1.0'); WRONG - Works OUTSIDE of a class definition.

const MIN_VALUE = 0.0; // RIGHT - Works INSIDE of a class definition.

const MAX_VALUE = 1.0; // RIGHT - Works INSIDE of a class definition.

public static function getMinValue()

{

return self::MIN_VALUE;

}

public static function getMaxValue()

{

return self::MAX_VALUE;

}

}

// 以上的php官网给出的一段测试代码

?>

PHP各类变量的调用方式(对象):

一般类成员变量: $obj->property

静态成员: $obj::$staticVariable // 要加 $ 符号!

使用可变变量形式进行调用一般成员变量: $obj->$variable

类中常量: $obj::CONSTANT //常量则不用加上$符号

注意这里的 1 和 3 容易混淆,3使用的是PHP可变变量的特性,具体可看博客中的 可变变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值