构造函数
构造函数被定义为对象实例化时自动执行的一段代码。
OOP构造函数的一些优点:
1、构造函数可以接受参数,能够在创建对象时赋给特定的对象属性
2、构造函数可以调用类方法或其他函数
3、类的构造函数可以调用其它构造函数,包括父类的构造函数
notice
PHP4也提供了类构造函数,但它使用了与PHP5不同的语法,更为麻烦。PHP4的构造函数只是与类同名的类方法。这种约定使得很难对类重命名。新的构造函数命名约定解决了这个问题。但是,处于对兼容性的考虑,如果一个类没有包含满足新命名约定的构造函数,就会查找与类同名的方法;如果找到,此方法就被认为是构造函数。
构造函数一般语法
function __construct([argumrnt1, argumrnt2...argumrntN ]){}
tips:如果要确保这些方法只能在构造函数中被调用,就应当将其作用于设置为private,确保无法通过对象或子类直接调用它们。
调用父类构造函数
PHP不会自动调用父类构造函数,必须使用parent 关键字显示调用。实例如下:
<?php
class Employee{
protected $name;
protected $title;
function __construct(){
echo "<p>Employee constructor called!</p>";
}
}
class Manager extends Employee{
function __construct(){
parent::__construct();
echo "<p>Manager constructor called!</p>";
}
}
$employee = new Manager();
?>
调用无关的构造函数
可以调用与实例化对象没有任何关系的类构造函数,只需在__construct 前面加上类名即可。
举个例子,假设前面示例中的Manager 和 Employee 类没有继承层次关系,只是同一个库中的两个类。Employee的构造函数依然可以在Manager构造函数中被调用:
Employee::__construct();
这样调用Employee构造函数将得到与前例相同的结果。
析构函数
析构函数名为 __destruct()。
脚本执行结束时,PHP会撤销内存中的所有对象。
因此,如果实例化的类和实例化时创建的信息都留在内存中,就不需要显示的声明析构函数;
但是,如果实例化时创建了不那么容易丢失(如存储在数据库中)的数据,并应当在对象撤销时撤销这些数据,为此就需要创建一个定制的析构函数。