在类中有一个特殊的方法:构造方法
构造方法的作用:初始化成员变量(属性)
看下面的代码
<?php
/**
* 学生类
*/
class Student
{
//这是学生的4个属性
private $no;
private $name;
private $sex;
private $age;
//构造方法
function __construct($no,$name,$sex,$age)
{
$this->no = $no;
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
//自我介绍
public function say(){
printf("自我介绍:我叫%s,年龄:%d",$this->name,$this->age);
}
}
//实例化对象
$stu1 = new Student(1001,'张三','男',20);
$stu1->say();
在上面的代码中,我们又见到很多新面孔,下面我就逐一讲介绍。
private:访问修饰符,表示私有的。被private修饰的属性和方法,在类的外部是不能访问的。
如果你写出以下代码:
$stu1 -> name = '张三'
就会报错:cannot access private property student::$name
__construct: 定义构造方法的关键字
定义构造方法时,可以无参数,也可以有参数,或者多个参数。
$this : 表示当前对象,只有在类的方法中,当访问成员变量(属性)或自己的方法时,才会用到$this
比如:$this->name ,其中的name 实际上就是指属性$name
总结一下:
构造方法不能主动调用,也就是你不能通过对象去访问构造方法
当我们实例化对象时,构造方法会自动执行,比如当执行:$stu1 = new Student(1001,'张三','男',20);
此时的构造方法就会被执行。
学完构造方法,接下来就是析构方法。析构方法的作用就是:处理对象善后的工作。
<?php
/**
* 学生类
*/
class Student
{
//这是学生的4个属性
private $no;
private $name;
private $sex;
private $age;
//构造方法
function __construct($no,$name,$sex,$age)
{
$this->no = $no;
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
//自我介绍
public function say(){
printf("自我介绍:我叫%s,年龄:%d",$this->name,$this->age);
}
//析构方法
function __destruct()
{
echo '正在执行析构方法 ';
}
}
//实例化对象
$stu1 = new Student(1001,'张三','男',20);
$stu1->say();
PHP有一套垃圾回收机制,当前文件执行完毕后,会销毁或释放所有的变量,也就是说:当执行完 $stu1->say() 时,就会销毁$stu1对象,在销毁对象之前,就会自动执行对象的析构方法,所以运行时会显示:
好了,封装类最基本的语法结构就介绍到这里。