构造方法(_ _construct) 和析构方法(__destruct)
构造方法,是一个特殊的方法:
1,名字是固定的:_ _construct;
2,该方法通常都不要我们自己调用,而是在new一个对象的时候会自动调用。
3,该方法主要的目的是为了在new一个对象的时候,给该对象设置一些“初始值”(初始化工作);
4,构造方法的参数没有规定,通常是根据实际的需要来定义,目的是为了对象属性数据的初始化;
先看这种没有构造方法的情形:

可见,这种方式,对对象的属性的数据值初始化不太方便,我们可以利用构造方法改进为:

析构方法(_ _destruct):
说明:
1,析构方法是一个特殊的方法,名字为固定的词:_ _destruct
2,析构方法是在一个对象被“销毁”的时候会自动被调用的方法——我们无法调用它;
3,析构方法不能带参数(形参),但方法中也可以使用$this这个词,代表“当前对象”;

对象在哪些情况下会被销毁?
1,如果程序结束,所有变量都会被销毁,自然,变量所代表的对象也会被销毁;

可见,对象销毁的顺序,默认情况下,跟其创建的顺序相反;
2,当一个对象没有任何变量“指向”它的时候,即使程序还没有结束,也会被销毁;

如下图所示:

另一个情况:

图示如下:

再来一个情况:

图示如下:

最后一个情况:

图示如下:
开始,其原理为:

赋值之后($o4 = 44),其结果及原理为:

原理$o4中存储的数据是new过来:$o4 = new C1(“D”);
构造方法(_ _construct) 和析构方法(__destruct)的更多相关文章
- PHP 构造方法 __construct()和PHP 析构方法 __destruct()
PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须 ...
- 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载
<?php /**构造方法__construct析构方法__destruct使用方法 PHP重写与重载 */ //构造方法:当实例化对象时,自动运行的方法 /*class channel{ fu ...
- 【PHP面向对象(OOP)编程入门教程】8.构造方法__construct()与析构方法__destruct()
大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法.构 造函数的声明与其它操作的声明一样,只是其名称必须是__ ...
- 构造方法__construct()与析构方法__destruct() 构造方法:刚出生时婴儿的啼哭 析构方法:老人临终时的遗言
<?phpclass person{ var $name; var $sex; var $age;//构造方法 function __construct($name, $sex, $age) { ...
- 010-对象——构造方法__construct析构方法__destruct使用方法 PHP重写与重载
<?php /*抽象方法和抽象类 抽象类必须通过子类继承之后,才能实现实例化. 类中有抽象方法,必须声明抽象类. 如果是抽象类,可以没有抽象方法,但必须通过子类去继承之后,实现实例化 final ...
- PHP中的构造方法和析构方法
构造方法(_ _construct): 构造方法,是一个特殊的方法: 1,名字是固定的:_ _construct: 2,该方法通常都不要我们自己调用,而是在new一个对象的时候会自动调用. 3,该方法 ...
- 浅谈PHP面向对象编程(三、构造方法和析构方法)
3.0 构造方法和析构方法 从我之前的博客可以发现,实例化一个类的对象后,如果要为这个对象的属性赋值,需要直接访问该对象的属性.如果想要在实例化对象的同时就为这个对象的属性进行赋值,则可以通过构造方法 ...
- php构造方法与析构方法
1. 构造方法 <?php //构造方法 __construct() 是在实例化对象时被自动调用 //用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法) //语法:[修饰符] f ...
- 【PHP构造方法和析构方法的使用】
构造方法:__construct,析构方法:__destruct 代码示例: <?php class Person { public $name; public $age; public fun ...
随机推荐
- [更新] Jetbrains IntelliJ IDEA 2019 的许可证密钥
亲测有效.转载目的:提供一种方法,当然可以看一下原网站的更新及其他方法.转载:[更新] Jetbrains IntelliJ IDEA 2019 的许可证密钥(100%工作),By Gideon ...
- .NET / C# HTTP中的GET和PSOT
需要引入using System.IO;using System.Net; public string GETs(string URL) { //创建httpWebRequest对象 HttpWebR ...
- C# 索引器(C#学习笔记05)
索引器 索引器能够使对象像数组一样被索引,使用数组的访问方式 object[x] 索引器的声明在某种程度上类似于属性的声明,例如,使用 get 和 set 方法来定义一个索引器. 不同的是,属性值的定 ...
- Springboot揭秘-快速构建微服务体系-王福强-2016年5月第一次印刷
JavaConfig项目: spring IOC有一个非常核心的概念——Bean.由Spring容器来负责对Bean的实例化,装配和管理.XML是用来描述Bean最为流行的配置方式.Spring可以从 ...
- Django 连接 MySQL 数据库及常见报错解决
目录 Django 连接 MySQL数据库及常见报错解决 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库 安装访问 MySQL 的 Python 模块 Django 相关配置 可能会遇 ...
- ubuntu升级python版本(3.5 -> 3.6)
#获取最新的python3.6,将其添加至当前apt库中,并自动导入公钥 $ sudo add-apt-repository ppa:jonathonf/python-3.6 $ sudo apt-g ...
- 2 Android程序的执行
Android系统采用的是分层架构,分四层: 1. Applicitations:应用层 2. Applicitation Framework:架构层 3. Libraries:类库层 4. ...
- Redis特点分析及性能优化
一.Key >Redis key值是二进制安全的,这意味着可以可以使用任何二进制序列作为key值.空字符串也是有效的key值. >key取值原则 1.键值不需要太长,消耗内存,且在数据中查 ...
- 在线java堆栈分析工具
1:工具地址 https://gceasy.io/ft-dashboard-web.jsp 2:在线分析结果
- vue2.0 在页面中使用process获取全局路径的时候 报错 process is not defined
如果是刚配置好的全局变量需要 重新启动一下vue才能通过proccess.env.xxx 获取到 如果想在html中使用 需要在data中声明一个变量 然后在vue生命周期中 将process.env ...