构造函数和析构函数

构造函数

构造函数被定义为对象实例化时自动执行的一段代码。

OOP构造函数的一些优点:

1、构造函数可以接受参数,能够在创建对象时赋给特定的对象属性
2、构造函数可以调用类方法或其他函数
3、类的构造函数可以调用其它构造函数,包括父类的构造函数

notice

PHP4也提供了类构造函数,但它使用了与PHP5不同的语法,更为麻烦。PHP4的构造函数只是与类同名的类方法。这种约定使得很难对类重命名。新的构造函数命名约定解决了这个问题。但是,处于对兼容性的考虑,如果一个类没有包含满足新命名约定的构造函数,就会查找与类同名的方法;如果找到,此方法就被认为是构造函数。

构造函数一般语法

function __construct([argumrnt1, argumrnt2...argumrntN ]){}

tips:如果要确保这些方法只能在构造函数中被调用,就应当将其作用于设置为private,确保无法通过对象或子类直接调用它们。

调用父类构造函数

PHP不会自动调用父类构造函数,必须使用parent 关键字显示调用。实例如下:
Employee constructor called!

"; } } class Manager extends Employee{ function __construct(){ parent::__construct(); echo "

Manager constructor called!

"; } } $employee = new Manager(); ?>

调用无关的构造函数

可以调用与实例化对象没有任何关系的类构造函数,只需在__construct 前面加上类名即可。

举个例子,假设前面示例中的Manager 和 Employee 类没有继承层次关系,只是同一个库中的两个类。Employee的构造函数依然可以在Manager构造函数中被调用:
Employee::__construct();
这样调用Employee构造函数将得到与前例相同的结果。



析构函数

析构函数名为 __destruct()。

脚本执行结束时,PHP会撤销内存中的所有对象。
因此,如果实例化的类和实例化时创建的信息都留在内存中,就不需要显示的声明析构函数;
但是,如果实例化时创建了不那么容易丢失(如存储在数据库中)的数据,并应当在对象撤销时撤销这些数据,为此就需要创建一个定制的析构函数。

你可能感兴趣的:(PHP)