Php构造函数
来源:互联网 发布:网络销售月工作计划 编辑:程序博客网 时间:2024/05/16 00:24
PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用 parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承(假如没有被定义为 private 的话)。
事例1:父类构造函数无参数
<?phpclass A { public $value = 'A'; public function __construct() { echo 'A construct'; }}class B extends A {}$B = new B();
运行结果:A construct
事例2
<?phpclass A { public $value = 'A'; public function __construct($value) { $this->value = $value; echo $this->value; }}class B extends A { }$B = new B('B');
运行结果:B
事例3
<?phpclass A { public $value = 'A'; public function __construct($value) { $this->value = $value; echo $this->value; }}class B extends A { //B类中也定义了自己的构造函数 public function __construct() { echo 'B construct'; }}$B = new B();
运行结果:B construct
由上述三个事例可以看出,在子类进行实例化对象时,如果父类有构造函数,而子类无构造函数,则自动执行构造函数;若父类有构造函数,而子类也有构造函数,则会执行子类的构造函数。
那么,如果想要在子类有构造函数,父类也有构造函数时,两者都执行,该如何操作呢?请看事例5:
事例5
<?phpclass A { public function __construct() { echo 'A construct'; }}class B extends A { public function __construct() { //这里就要加上parent::__construct()或者A::__construct()来主动调用父类的构造函数 parent::__construct(); echo 'B construct'; }}$B = new B();
运行结果:A constructB construct
定义构造函数难道只能用__construct吗?大家肯定知道,还有就是可以使用和类名同名的命名方式来定义构造函数:
事例6
<?phpclass A { public function A() { echo 'A construct'; }}class B extends A { public function B() { //这里调用时,也可以使用A::__construct()或者A::A()来进行调用 A::__construct(); echo 'B construct'; }}$B = new B();
运行结果:A constructB construct
这里还要情调的一点是,Php中,函数名是不区分大小写的,但是变量属性名是区分大小写的,大家不妨可以试一试,印象更深刻。
0 0
- PHP构造函数
- php 构造函数参数
- PHP中的构造函数
- JavaScript构造PHP函数
- PHP重载构造函数
- php 构造函数
- Php构造函数
- PHP基础知识构造函数
- php创建构造函数
- PHP构造函数的继承
- php 构造函数的继承
- php的构造函数理解
- PHP 构造函数的重载
- php的构造函数解析
- PHP构造函数和其他魔法函数
- PHP构造函数与析构函数
- php函数重载与构造函数重载
- PHP构造函数和析构函数
- Android仿微信dialog
- RT-Thread 基于STM32F1xx HAL 库的学习笔记(1)---加入HAL库
- 由浅到深理解ROS(8)-线程管理
- hibernate和jdbc,eb的区别,持久层对象的含义,都是中间件,hql和sql语句的差别以及速率
- Linux netstat命令详解
- Php构造函数
- Sublime Text 中文标题异常但是内容正常解决方案
- MSC51汇编练习
- 卖热干面的启发 ---Builder 模式
- SpringMVC4零配置
- 项目管理利器(Maven)——继承和聚合
- CentOS下安装Hadoop伪分布集群踏坑之路
- AI用于医学影像,你需要知道这些
- WIN32、VxWorks、Linux线程类比