1. 静态成员方法
静态成员方法是指在类中通过static关键字定义的方法,可以通过类名::方法名()或对象名::方法名()的形式调用,常用于对类的数据进行操作。相比于普通成员方法,静态成员方法的主要特点是:
不依赖于对象,因此可以直接通过类名调用
不能访问非静态成员,因为非静态成员是属于对象的
静态成员方法没有$this指针,因为$this是指向当前对象的指针
静态成员方法可以通过self关键字来访问当前类中的其他静态成员
1.1 示例
我们来看一个简单的示例,定义一个类Calculator,其中包含一个静态成员方法add(),实现两数相加的功能:
class Calculator {
public static function add($a, $b) {
return $a + $b;
}
}
//调用静态成员方法
$result = Calculator::add(2, 3);
echo $result; //输出5
在上面的例子中,我们定义了一个静态成员方法add(),用于将两个数相加,并且直接通过类名Calculator::add()的形式调用方法,得出了5的结果。
2. 静态成员属性
静态成员属性是指在类中通过static关键字定义的成员属性,可以通过类名::$属性名或对象名::$属性名的形式访问,常用于存储共享数据。相比于普通成员属性,静态成员属性的主要特点是:
不依赖于对象,因此可以直接通过类名访问
静态成员属性是属于类的,多个对象之间共享同一个属性值
静态成员属性不能在对象中进行初始化赋值,只能在类中定义并初始化赋值,例如:static $count = 0;
静态成员属性可以通过self关键字来访问当前类中的其他静态成员
2.1 示例
下面我们定义一个类User,其中包含一个静态成员属性$count,用于统计用户注册的总数:
class User {
public static $count = 0;
public function __construct() {
self::$count++;
}
}
//创建3个用户对象
$user1 = new User();
$user2 = new User();
$user3 = new User();
//访问静态成员属性
echo User::$count; //输出3
在上面的例子中,我们定义了一个静态成员属性$count,用于记录用户注册的总数。在User类的构造函数中,通过self::$count++操作,每创建一个用户对象就将$count值加1。最后通过User::$count访问静态成员属性,得到3的统计结果。
3. 总结
静态成员方法和静态成员属性是常用的面向对象编程技术,使用这些技术可以实现多个对象之间共享数据,提高程序的效率和可维护性。当需要进行类级别的操作时,可以考虑使用静态成员方法和静态成员属性。