在类中定义的变量称之为属性,常见的属性声明是由关键字public,protected,var或private开头,后面跟一个普通的变量声来组成。还有一些成员属性包括,静态static,常量const。
- public:默认值,表示全局的,类内部外部子类都可以访问。
- protected:表示受保护的,只有本类或子类或父类中可以访问,不允许外部调用。
- private:表示私有的,只有本类内部可以使用。
- Var:php 5 版本中会认为这个成员属性为public类型的属性。
- Static:
- 静态的属性;
- 用static修饰的成员属性可以被同一个类的所有对象共享;
- 静态的数据是在类第一次被加载的时候就存在了内存中的数据段中(初始化静态段);
- 类中使用self::成员属性名;
- 类外 类名::成员属性名;
- Const:
1)类中常量属性,在类中声明常量必须使用const;
2)类中使用 self::成员属性名;
3)类外使用 类名::成员属性名;
注意:属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段运算出的常数。例如,不能包含任何运算符,不能是任何变量,不能是一个函数等。
成员属性的调用方式:在类的成员方法里面,可以通过 $this->property(property是属性名字)这种方式来访问类的属性、 方法。但是要访问类的静态属性或者在静态方法里面却不能使用,而是使用 self::$property。 在类的非静态方法里面可以使用伪变量 $this,这个伪变量是调用该方法的实例化对象引用。
例1:
class Car{
//定义公共属性
public $name="汽车";
//定义受保护的属性
protected $color="白色";
//定义私有属性
private $price="10000";
}
$aCar=new Car();
echo $aCar->name; //调用对象的属性
echo $aCar->color; //错误!受保护的属性不允许外部调用
echo $aCar->price; //错误!私有属性不允许外部调用
受保护的属性和私有属性不允许外部调用,在类的成员方法内部是可以调用的。
可将例1修改为如下例2:
class Car{
//定义公共属性
public $name="汽车";
//定义受保护的属性
protected $speed="100";
//定义私有属性
private $price="12";
function getPrice(){
return $this->price;
}
}
echo $aCar->getPrice();
可以过此方法访问类内部的私有属性或受保护的属性。