PHP static静态属性和静态方法(附带实例)
在 PHP 中,如果想让类中的某个成员只保存一份,并且可以通过类直接访问,则可以将这个成员定义为静态成员。
PHP 的静态成员包括静态属性和静态方法。静态成员使用 static 关键字修饰。定义静态成员的语法格式如下:
在类外访问静态成员时,不需要创建对象,直接通过类名访问即可,具体语法格式如下:
在类中可以使用 self 或 static 关键字配合“::”访问静态成员,self 和 static 关键字在类的内部代替类名,当类名发生变化时,不需要修改类的内部代码。在类内访问静态成员的语法格式如下:
为了能够让读者更好地理解静态成员的使用方法,下面演示静态成员的定义和访问,具体代码如下:
PHP 的静态成员包括静态属性和静态方法。静态成员使用 static 关键字修饰。定义静态成员的语法格式如下:
public static $属性名; // 定义静态属性 public static 方法名() {} // 定义静态方法在上述语法格式中,在属性名和方法名前面添加 static 关键字,表示静态成员。
在类外访问静态成员时,不需要创建对象,直接通过类名访问即可,具体语法格式如下:
类名::$属性名; // 访问静态属性 类名::方法名(); // 访问静态方法(调用静态方法)
在类中可以使用 self 或 static 关键字配合“::”访问静态成员,self 和 static 关键字在类的内部代替类名,当类名发生变化时,不需要修改类的内部代码。在类内访问静态成员的语法格式如下:
self::$属性名; // 使用self访问静态属性 self::方法名(); // 使用self访问静态方法(调用静态方法) static::$属性名; // 使用static访问静态属性 static::方法名(); // 使用static访问静态方法(调用静态方法)
为了能够让读者更好地理解静态成员的使用方法,下面演示静态成员的定义和访问,具体代码如下:
class Student { public static $age = '18'; public static function show() { echo self::$age; // 在类内使用self关键字访问静态属性 echo static::$age; // 在类内使用static关键字访问静态属性 } } echo Student::$age; // 在类外访问静态属性 Student::show(); // 在类外访问静态方法在上述代码中:
- 第 6~7 行代码在类内访问静态属性;
- 第 10 行代码在类外访问静态属性,输出结果为 18;
- 第 11 行代码在类外访问静态方法,输出结果为 1818。
PHP “::”和“->”访问类成员时的区别
在使用“::”和“->”访问类成员时,需要注意如下内容:- 当“::”左侧是类名、self 或 static时,可以访问静态属性和静态方法,不能访问非静态属性和非静态方法;
- 当“::”左侧是 $this 或 $对象名时,可以访问静态属性和静态方法,不能访问非静态属性和非静态方法;
- 当“->”左侧是 $this 或 $对象名时,可以访问非静态属性、非静态方法和静态方法,不能访问静态属性。