2-6 PHP类和对象之Static静态关键字
本节编程练习不计算学习进度,请电脑登录imooc.com操作

PHP类和对象之Static静态关键字

静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用。静态属性不允许对象使用->操作符调用。

class Car {
    private static $speed = 10;
    
    public static function getSpeed() {
        return self::$speed;
    }
}
echo Car::getSpeed();  //调用静态方法

静态方法也可以通过变量来进行动态调用

$func = 'getSpeed';
$className = 'Car';
echo $className::$func();  //动态调用静态方法

静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。

class Car {
    private static $speed = 10;
    
    public static function getSpeed() {
        return self::$speed;
    }
    
    public static function speedUp() {
        return self::$speed+=10;
    }
}
class BigCar extends Car {
    public static function start() {
        parent::speedUp();
    }
}

BigCar::start();
echo BigCar::getSpeed();

任务

我也来试一试:定义一个静态方法,实现速度累加10

在右侧代码编辑器第10-12行输入下面代码:

public static function speedUp() {
    return self::$speed+=10;
}
  1. <?php
  2. class Car {
  3. private static $speed = 10;
  4.  
  5. public function getSpeed() {
  6. return self::$speed;
  7. }
  8.  
  9. //在这里定义一个静态方法,实现速度累加10
  10.  
  11.  
  12.  
  13.  
  14.  
  15. }
  16.  
  17. $car = new Car();
  18. Car::speedUp(); //调用静态方法加速
  19. echo $car->getSpeed(); //调用共有方法输出当前的速度值
下一节