类是具有相同属性和操作的一组对象的集合
# 创建类
class Teacher{
}
# 调用类(实例化)
$xiaoming = new Teacher();
$xiaohong = new Teacher();
$xiaogang = new Teacher();
类型 | 描述 |
---|---|
object | 对象 |
var_dump($xiaoming); var_dump($xiaohong); var_dump($xiaogang);
var_dump($xiaoming == $xiaohong); echo '<hr/>'; var_dump($xiaohong == $xiaogang); echo '<hr/>'; var_dump($xiaoming == $xiaogang);
成员变量,也叫: 类属性
class Teacher{
public $name = '小红';
public $school = 'PHP';
}
$xiaoming = new Teacher();
echo $xiaoming->name;
echo '<hr/>';
echo $xiaoming->school;
class Teacher{
public $name = '小红';
public $school = 'PHP教程';
public function fun1(){
echo '姓名:小红,学校:PHP教程<hr/>';
}
public function fun2(){
return '姓名:小红,学校:PHP教程<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
}
// 类实例化
$yangmi = new Teacher();
$yangmi->fun1();
echo $yangmi->fun2();
echo $yangmi->fun3();
echo $yangmi->fun4();
类里成员有两种:属性(变量)和行为(方法)
方法 | 描述 |
---|---|
__construct | 构造方法 |
__destruct | 析构方法 |
构造方法
class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun1(){
echo '姓名:小红,学校:PHP教程<hr/>';
}
public function fun2(){
return '姓名:小红,学校:PHP教程<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
}
// 实例化
$obj = new Teacher('小明','PHP教程');
echo $obj->fun4();
析构方法
class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun1(){
echo '姓名:小红,学校:PHP教程<hr/>';
}
public function fun2(){
return '姓名:小红,学校:PHP教程<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 实例化
$obj = new Teacher('小明','PHP教程');
echo $obj->fun3();
其他魔术方法
方法 | 描述 |
---|---|
__call | 在对象中调用一个不可访问方法时调用 |
__callStatic | 用静态方式中调用一个不可访问方法时调用 |
__get | 获得一个类的成员变量时调用 |
__set | 设置一个类的成员变量时调用 |
__isset | 当对不可访问属性调用isset()或empty()时调用 |
__unset | 当对不可访问属性调用unset()时被调用 |
__sleep | 执行serialize()时,先会调用这个函数 |
__wakeup | 执行unserialize()时,先会调用这个函数 |
__toString | 类被当成字符串时的回应方法 |
__invoke | 调用函数的方式调用一个对象时的回应方法 |
__set_state | 调用var_export()导出类时,此静态方法会被调用 |
__clone | 当对象复制完成时调用 |
__autoload | 尝试加载未定义的类 |
__debugInfo | 打印所需调试信息 |