构造方法,是一个特殊的方法:

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)的更多相关文章

  1. PHP 构造方法 __construct()和PHP 析构方法 __destruct()

    PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须 ...

  2. 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载

    <?php /**构造方法__construct析构方法__destruct使用方法 PHP重写与重载 */ //构造方法:当实例化对象时,自动运行的方法 /*class channel{ fu ...

  3. 【PHP面向对象(OOP)编程入门教程】8.构造方法__construct()与析构方法__destruct()

    大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法.构 造函数的声明与其它操作的声明一样,只是其名称必须是__ ...

  4. 构造方法__construct()与析构方法__destruct() 构造方法:刚出生时婴儿的啼哭 析构方法:老人临终时的遗言

    <?phpclass person{ var $name; var $sex; var $age;//构造方法 function __construct($name, $sex, $age) { ...

  5. 010-对象——构造方法__construct析构方法__destruct使用方法 PHP重写与重载

    <?php /*抽象方法和抽象类 抽象类必须通过子类继承之后,才能实现实例化. 类中有抽象方法,必须声明抽象类. 如果是抽象类,可以没有抽象方法,但必须通过子类去继承之后,实现实例化 final ...

  6. PHP中的构造方法和析构方法

    构造方法(_ _construct): 构造方法,是一个特殊的方法: 1,名字是固定的:_ _construct: 2,该方法通常都不要我们自己调用,而是在new一个对象的时候会自动调用. 3,该方法 ...

  7. 浅谈PHP面向对象编程(三、构造方法和析构方法)

    3.0 构造方法和析构方法 从我之前的博客可以发现,实例化一个类的对象后,如果要为这个对象的属性赋值,需要直接访问该对象的属性.如果想要在实例化对象的同时就为这个对象的属性进行赋值,则可以通过构造方法 ...

  8. php构造方法与析构方法

    1. 构造方法 <?php //构造方法 __construct() 是在实例化对象时被自动调用 //用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法) //语法:[修饰符] f ...

  9. 【PHP构造方法和析构方法的使用】

    构造方法:__construct,析构方法:__destruct 代码示例: <?php class Person { public $name; public $age; public fun ...

随机推荐

  1. Github 上优秀的 Java 项目推荐

    1.JavaGuide 地址:Snailclimb/JavaGuide [Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识. 2.DoraemonKit 地址:didi/Do ...

  2. typescript nodejs 依赖注入实现

    依赖注入通常也是我们所说的ioc模式,今天分享的是用typescript语言实现的ioc模式,这边用到的主要组件是 reflect-metadata 这个组件可以获取或者设置元数据信息,它的作用是拿到 ...

  3. RabbitMQ学习之Publish/Subscribe(3)

    上一个教程中,我们创建了一个work queue. 其中的每个task都会被精确的传送到一个worker. 这节,我们将会讲把一个message传送到多个consumers. 这种模式叫做publis ...

  4. wps金山文档在线编辑--.Net 接入指南

    一.申请成为服务商,对金山文档在线服务进行申请 ①进入官网 https://open.wps.cn/ ②申请后如下图,点击右下角的进入服务 ③申请成功后 ④数据回调URL一定是服务器地址,本次我使用的 ...

  5. C#中字符串转换为计算公式

    添加COM引用: private void button_Click(object sender, EventArgs e) { MSScriptControl.ScriptControl sc = ...

  6. 用python完成排序算法

    排序算法总结 冒泡排序 相邻两个元素,两两循环比较,每趟筛选出一个最大或者最小的元素(有序区在后面) def bubble_sort(data): # 第一层循环:循环一次,代表一趟,并筛选出一个最大 ...

  7. 【转载】C#中AddRange方法往ArrayList集合末尾添加另一个集合

    ArrayList集合是C#中的一个非泛型的集合类,是弱数据类型的集合类,可以使用ArrayList集合变量来存储集合元素信息,任何数据类型的变量都可加入到同一个ArrayList集合中,如果需要往一 ...

  8. Jackson动态JSON处理

    https://www.baeldung.com/jackson-mapping-dynamic-object https://www.baeldung.com/jackson-deserializa ...

  9. CORS-跨域资源共享 解决跨域问题

    1.什么是跨域? a.test.com 和 b.test.com 是两个不同的域,而处于安全机制考虑,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容,但是我们在项目开发时,经常遇到一个页 ...

  10. Scroller——startScroll、fling(惯性滑动)

    Scroller主要用于平滑滚动,主要使用的滚动方法有:startScroll.fling. startScroll(int startX, int startY, int dx, int dy, i ...