在类中定义的变量称之为属性,通常属性跟数据库中的字段有一定的关联,因此也可以称作“字段”。属性声明是由关键字 public,protected 或者 private 开头,后面跟一个普通的变量声明来组成。属性的变量可以设置初始化的默认值,默认值必须是常量。

访问控制的关键字代表的意义为:

public:公开的 protected:受保护的 private:私有的

class Car {
    //定义公共属性
    public $name = ‘汽车’;

//定义受保护的属性
protected $corlor = '白色';

//定义私有属性
private $price = '100000';

}

默认都为public,外部可以访问。一般通过->对象操作符来访问对象的属性或者方法,对于静态属性则使用::双冒号进行访问。当在类成员方法内部调用的时候,可以使用$this伪变量调用当前对象的属性。
$car = new Car();
echo $car->name;   //调用对象的属性
echo $car->color;  //错误 受保护的属性不允许外部调用
echo $car->price;  //错误 私有属性不允许外部调用
受保护的属性与私有属性不允许外部调用,在类的成员方法内部是可以调用的。
class Car{
    private $price = ‘1000’;
    public function getPrice() {
        return $this->price; //内部访问私有属性
​    }
}
<?php class Car{ //在这里定义一个共有属性name public $name=‘汽车’; protected $price=‘1000’; private $color=‘blue’; } $car = new Car(); //在这里输出$car对象的name属性 echo $car->name;
 

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

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();

使用extend完成类的进程
<?php class Car { public $speed = 0; //汽车的起始速度是0 public function speedUp() { $this->speed += 10;
        return $this->speed;
    }
}
//定义继承于Car的Truck类
class Truck extends Car{
    public function speedUp(){
        $this->speed=parent::speedUp()+50;
    }
}
$car = new Truck();
$car->speedUp();
echo $car->speed;
发布于