面向对象 - 属性

  • 作者:KK

  • 发表日期:2017.02.14


属性的声明

类里面有一种叫属性(property)的元素:

class User{
	public $name;
}

现在类里就声明了一个属性,属性名称叫name

前面的public先不解释,但后面加空格后,要以$开头,写一个变量名,它就是属性名


属性的使用

声明了属性后,并不是让它摆着装饰的,而是可以拿来用的,接下来看看怎么使用:

$user = new User();
$user->name = 'Jay'; // 属性就相当于类的变量,可以赋值

echo $user->name; // 也可以取值

像使用平时的变量一样赋值取值就可以了,只是前面要先加上类的实例变量名称(比如 $user),然后在变量名称后面加上->这个箭头符号,再书写属性名称

但注意箭头后面的直接就是属性名称,而不是以$开头($user->$name是错的,$user->name才正确)


每个实例的属性都是独立的,互不干扰

$user1 = new User();
$user1->name = 'Jay';

$user2 = new User();
$user2->name = 'Marie';

echo '用户1的名字是:' . $user1->name . '</br>';
echo '用户2的名字是:' . $user2->name;

上面user2可赋值name属性后,user1的并不会被改变,因为两个是不同的实例


能定义默认值

声明属性的时候可以设置它的默认值,以免每次new都要赋值

class User{
	//定义了一个 性别 属性,默认值是“boy”
	public $gender = 'boy';
	
	public $name;
}

$user = new User();
echo $user->gender; // boy
echo $user->name; //空的,因为没有定义默认值

就像平时定义变量值一样写上去就行了


可以声明多个属性

直接写多几个public $属性名称就可以了

class User{
	public $name = 'Jay';
	
	public $gender = '男';
	
	public $age = 14;
}

$user = new User();
print_r([
	$user->name,
	$user->gender,
	$user->age,
]);