IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 如何区分和使用,构造函数__construct()和_initialize()。 -> 正文阅读

[PHP知识库]如何区分和使用,构造函数__construct()和_initialize()。

1、什么是构造函数?

构造函数:在创建对象时初始化对象(类), 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。

class Boy{
	//定义变量
	public $age ;
	public $height;
	public $sex;
}

//结果
$boy = new Boy();
$boy->age = 18;
$boy->height = '180';
$boy->sex = '男';

如果变量很多的话,工作量就会很多,所有引入了构造方法。该方法可以无参数,也可以有多个参数。

//构造方法写
class Boy{
	//定义变量
	public $age ;
	public $height;
	public $sex;

	public function __construct($age,$height,$sex){
			$this->age = $age;
			$this->height= $height;
			$this->sex= $sex;
	}
	
	public function pelope(){
		if($this->age<35 && $this->heighe >180){
			echo "体检考核通过";
		}else{
			echo "考核不通过。";
		}
	}
}	
//调用
$pe = new Boy(18,195);
echo $pe->pelope();
//结果
体检考核通过

构造方法:
(1)构造出来一个类的实例
(2)对构造出来个一个类的实例(对象)初始化。

2、__construct()和_initialize()的区别?

__construct():是PHP内置的函数
__initialize():是php框架自定义的函数(ThinkPHP)。

3、父类和子类__construct()的继承关系

1、子类没有构造行数,继承了父类

class Father{
	public function __construct(){
		echo "父亲";
	}
}

class Son extends Father{
	
}

$son = new Son();
echo $son;
//输出结果
父亲

2、子类定义了构造函数,则不会被继承父类。

class Father{
	public function __construct(){
		echo "父亲";
	}
}

class Son extends Father{
	public function __construct(){
		echo "儿子";
	}
}

$son = new Son();
echo $son;
//输出结果
儿子

3、子类定义了构造函数,父类定义了构造函数,调用父类的的方法。

class Father{
	public function __construct(){
		echo "父亲";
	}
	
}

class Son extends Father{
	public function __construct(){
	 	parent::__construct();
		echo "儿子";
	}
}

$son = new Son(); 
echo $son;
//输出结果
父亲儿子

4、父类和子类__initialize()的继承关系

1、父类自定义构造函数,子类调用了父类的构造函数,而没有调用子类的_initialize()方法

class Father{
	public function __construct(){
		echo "父亲";
	}
	
}

class Son extends Father{
	public function __initialize(){
		echo "儿子";
	}
}

$son = new Son(); 
echo $son;
//输出结果
父亲

总结

1、当Thinkphp的父类有构造行数而子类没有时,Thinkphp不会去执行子类的__initialize()。

2、当Thinkphp的父类子类都有构造函数,要调用父类的构造函数,子类必须使用 parent::__construct();__initialize()也同理一样。

3、当Thinkphp的子类存在__construct()构造函数和__initialize(),只会执行子类的__construct()构造函数。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:41:11  更:2021-07-14 10:41:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/29 2:00:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码