PHP 中的静态变量
本文将介绍 PHP 静态变量,解释它们的特性,并演示在面向对象的上下文中访问静态变量的各种方法。
PHP 中的静态变量
程序中的变量用于存储以后可以在程序中使用的数据或值。变量可以存储字符、数值、字符串、内存地址等。
在 PHP 中,我们使用 $
美元符号后跟变量名称来声明或存储值。
例子:
$name = "John Doe";
$marks = 90;
同样,静态变量是其范围不结束于函数之外的变量。非静态变量的作用域在函数退出后被销毁。
我们可以使用 static
关键字声明一个静态变量。
例子:
static $name = "John Doe";
static $marks = 90;`
让我们通过下面的演示来看看静态变量的属性。
代码示例:
function total_marks () {
static $marks = 90;
$marks ++;
print $marks;
print "<br />";
}
total_marks();
total_marks();
total_marks();
输出:
91
92
93
上面的代码显示静态变量即使在函数结束后仍保留其值。对函数 total_marks()
有三种不同的调用,但即使在函数退出后 $marks
的值也不会被破坏。
在进行第二次和第三次函数调用时,该值不会重置为 90
。随着先前的值被保留,它会继续增加。
让我们将上面的示例应用于非静态变量。
示例代码:
function total_marks () {
$marks = 90;
$marks ++;
print $marks;
print "<br />";
}
total_marks();
total_marks();
total_marks();
输出:
91
91
91
每次进行函数调用时,$marks
变量的值都会重置为 90
。它表明非静态变量不保留其先前的值。
在 PHP 中使用 self
关键字访问类中的静态变量
我们可以使用 self
关键字来访问类中的静态变量。双冒号 ::
用在 self
关键字之后,静态变量紧随其后。
this
关键字不适用于静态变量,因为静态变量不属于对象。
例如,在一个类中,Student
创建一个静态变量 $name
并分配一个值 John Doe
。在函数内部,who()
使用带有双冒号的 self
关键字来访问静态变量 $name
,最后,使用类的对象调用该函数。
示例代码:
class Student {
public static $name = "John Doe";
public function who() {
echo self::$name;
}
}
$obj = new Student;
$obj->who();
输出:
John Doe
PHP 中使用类名访问类外的静态变量
可以直接访问静态变量,而无需创建类的实例。要访问类外部的静态变量,我们可以编写类的名称,后跟双冒号(::
),后跟静态变量的名称。
例如,在一个类中,Student
像第一个方法一样创建一个静态变量。接下来,在类外写入 Student:$name
以访问静态变量。
示例代码:
class Student {
public static $name = "John Doe";
}
echo Student::$name;
输出:
John Doe
静态变量 $name
在类外部使用类名访问。
访问静态方法中的静态变量
在第一个示例中,我们了解了如何访问类中的静态变量。在那里,我们访问了非静态方法内部的静态变量。
本节将把静态变量放在静态方法中并对其进行访问。我们可以在函数前写 static
关键字来创建静态方法,在不创建类实例的情况下访问静态函数,并使用类名调用静态方法。
示例代码:
class Student {
public static $name = "John Doe";
public static function who() {
echo self::$name;
}
}
Student::who();
输出:
John Doe
在这里,我们使用::
运算符访问了类 Student
的静态方法 who()
。我们使用 self
关键字来访问方法内的静态变量。
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn