1. 构造方法;
- 构造方法是 PHP5 中出现的一个新的特性,在实例化对象的时候自动调用。
- 在实例化的时候可以给类进行一些赋初始值的操作。
# 构造方法语法格式
[修饰符] function __construct([参数]){
程序体
}
# 构造的方法的名字是固定的
# 构造方法也是魔术方法的一种
# 在实例化时候传递的参数,会在构造方法里被接收到。
# 之前写过一个 person 类。在现实生活中,每个人都要有名字、年龄、性别。
# 如果在声明类的时候,就把这几个成员属性赋了初始值,
# 那么实例化对象的几个成员属性都是相同的值,所有的人都是相同的名字、年龄、性别。这样是不符合需求的。
# 所以这里就要用到构造方法,去给每一个成员属性在每一次实例化的时候,赋一个自己特有的值。
构造方法实例:person.class.php
<?php
class person{
public $name;
public $age;
public $gender;
/**
* 构造方法 __construct() 是在实例化对象时被自动调用
* 用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法)
* 语法:[修饰符] function __construct(参数列表...){ 初始化流程 }
*/
public function __construct($n, $a, $g = '男'){
$this -> name = $n;
$this -> age = $a;
$this -> gender = $g;
$this -> say();
}
public function say(){
echo "我的名字是:{$this -> name},";
echo "我的年龄是:{$this -> age},";
echo "我的性别是:{$this -> gender}。";
}
}
// 实例化对象时要按构造方法的参数去传对应的值,必传参数要放在可选参数之前
$person1 = new person("张三", 18);
echo $person1 -> name;
echo "<br />";
echo $person1 -> age;
echo "<br />";
echo $person1 -> gender;
echo "<br />";
$person1 -> say();
echo "<hr />";
$person2 = new person("李四", 30, "女");
echo $person2 -> name;
echo "<br />";
echo $person2 -> age;
echo "<br />";
echo $person2 -> gender;
echo "<br />";
$person2 -> say();
echo "<hr />";
$person3 = new person("王五", 20, "男");
echo $person3 -> name;
echo "<br />";
echo $person3 -> age;
echo "<br />";
echo $person3 -> gender;
echo "<br />";
$person3 -> say();
2. 析构方法。
- 与构造方法相对应的就是析构方法,析构方法是在对象被销毁时,被自动调用的一个方法。
- 用途很多,可以进行一些资源操作中的释放资源、以及文件操作中的关闭文件。或者说如果有一些用户信息,你想在最后保存一下,如果你想让用户去点一些保存的按钮,可能用户不会去操作。那我们就可以用析构方法,把这些保存的流程写到析构方法中。
# 析构方法方法格式
[修饰符] function __destruct([参数]){
程序体
}
析构方法实例:person.class.php
<?php
class person{
public $name;
public $age;
public $gender;
// 注意:成员属性 $name 和 构造方法形参 $name 是不同的
public function __construct($name, $age, $gender){
$this -> name = $name;
$this -> age = $age;
$this -> gender = $gender;
}
public function say(){
echo "say";
}
/**
* 析构方法 __destruct() 是在对象被销毁时自动调用
* 用途:可以进行资源的释放操作或文件的关闭操作或信息保存操作
* 注意:栈内存的先进后出
*/
public function __destruct(){
echo "88{$this -> name}<br />";
}
}
$person = new person("zhangsan", 18, 'female');
$person -> say();
echo "<hr />";
$person1 = new person("lisi", 20, "male");
$person1 -> say();
# 输出
say
--------------------
say88lisi
88zhangsan
# 原理解释
# 和内存操作(出栈,入栈)有关。它是一种“栈内存”的操作,先进后出。
# 析构方法是在对象销毁的时候执行。是在什么时候销毁对象?是在**脚本执行完**才会销毁。