PHP类中的常量、静态属性和非静态属性是常用的三种类成员变量。它们在类中扮演着不同的角色和承担不同的任务。下面我们来详细了解它们的区别和用法。
PHP类中的常量
常量是一种类成员变量,其值在定义之后不能改变。在PHP中使用 const
关键字定义常量。常量的命名规则与变量相同,但是一般情况下常量名用大写字母表示。常量可以在类定义中直接声明,也可以在类定义之外声明。如果常量在类定义之外声明,则必须使用类名限定符才能访问常量,例如 类名::常量名
。
示例:
class MyClass {
const PI = 3.14;
public function showPi() {
echo self::PI; // 输出3.14
}
}
echo MyClass::PI; // 输出3.14
在上面的代码中,我们定义了一个名为 PI
的常量,并在类定义之内和之外分别访问它。在类方法中,通过 self::PI
访问常量,而在类定义外部,通过 类名::PI
访问常量。
PHP类中的静态属性
静态属性是一种类成员变量,其值不随对象的创建而产生变化,而是在整个类中共享。在PHP中使用 static
关键字定义静态属性。静态属性也可以被声明为私有属性,但不能被声明为受保护的或公共的属性。
示例:
class MyClass {
private static $myVar = 0;
public function incVar() {
self::$myVar++; // 修改静态属性
echo self::$myVar; // 输出当前静态属性值
}
}
$obj1 = new MyClass();
$obj2 = new MyClass();
$obj1->incVar(); // 输出 1
$obj2->incVar(); // 输出 2
在上面的代码中,我们定义了一个名为 myVar
的静态属性,并在 incVar
方法中修改它的值。然后我们创建了两个 MyClass
类的对象,并对它们分别调用 incVar
方法,可以看到每个对象都共享了相同的静态属性。
PHP类中的非静态属性
非静态属性是属于类对象的成员变量,每个类对象都包含一组实例变量。在PHP中使用 public
、protected
或 private
关键字定义非静态属性。
示例:
class MyClass {
private $myVar = 0;
public function incVar() {
$this->myVar++; // 修改实例变量
echo $this->myVar; // 输出当前实例变量值
}
}
$obj1 = new MyClass();
$obj2 = new MyClass();
$obj1->incVar(); // 输出 1
$obj2->incVar(); // 输出 1
在上面的代码中,我们定义了一个名为 myVar
的实例变量,并在 incVar
方法中修改它的值。然后我们创建了两个 MyClass
类的对象,并对它们分别调用 incVar
方法,可以看到每个对象都拥有具有不同值的实例变量。
总的来说,常量、静态属性和非静态属性都是PHP面向对象编程中重要的概念。常量用于定义类的常数,静态属性用于在类之间共享数据,非静态属性则是实例变量,用于存储特定对象的状态。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 类中的常量、静态属性、非静态属性的区别 - Python技术站