浅谈PHP面向对象编程(三、构造方法和析构方法)
3.0 构造方法和析构方法
从我之前的博客可以发现,实例化一个类的对象后,如果要为这个对象的属性赋值,需要直接访问该对象的属性。如果想要在实例化对象的同时就为这个对象的属性进行赋值,则可以通过构造方法来实现。构造方法是类的一个特殊成员,它会在类实例化对象时自动调用,用于对类中的成员进行初始化。与构造方法对应的是析构方法,它在对象销毁之前被自动调用。用于完成清理工作。本节将针对构造方法和析构方法进行详细讲解。
3.1 构造方法
修饰符 function __construct(参数列表){
//初始化操作
}
在上述语法格式中.需要注意的是构造方法的名称必须为 __construct 修饰符可以省略默认为pablic.接下来通过一个案例来学习构造方法的使用,如例3-6所示。
<?php
class Person{
public $name;//成员属性$name,存储姓名
public $age; //成员属性$age,存储年龄
//声明一个构造方法,将来创建对象时,为对象的成员属性赋予初始值
function __construct($name,$age){
//使用传入的参数$name为成员属性$this->name赋初值
$this->name = $name;
//使用传入的参数$age为成员属性$this->age赋初值
$this->age = $age;
}
function show(){
echo $this->name.' = '.$this->age;
}
}
$p1 = new Person("kimi",9);
$p1->show();
?>
运行结果

在例3-6中,通过构造方法实现了在创建对象的同时给对象中的属性赋值的功能。在第6-11行代码中声明了Person 类的构造方法,用于初始化$name和$age属性。在第16行代码中,创建Person对象$p1时调用构造函数,从而完成对象的初始化。 最后在第12行代码调用了$p1的show()方法,输出初始化的结果。
值得一提的是,在PHP5之前的版本中,构造方法名和类名相同,这种方式在PHP5中仍然可以使用,但应该尽量将构造方法命名为_ _construcet0. 其优点是可以使构造方法独立于类名,当类名发生变化时不需要更改相应的构造方法名称。为了向下兼容,创建对象时,如果一个类中没有名为_ _constuct()的构造方法,PHP将寻找与类名同名的构造方法执行,如果找不到,则执行默认的空构造方法。
注意:
(1)构造方法没有返回值。
(2)构造方法的作用是完成对新对象的初始化,并不是创建对象本身。
(3)在创建新对象后,系统会自动调用该类的构造方法。不需要手动调用。
(4)一个类有且只有一个构造方法,在PHP5后虽然_ construct()和类名()可以共存,但只能使用一个。
(5)构造方法和普通方法一样,可以访问类属性和方法,也有访问控制修饰符,还可以被其他方法调用。
3.2 析构方法
析构方法是PHIPS中新添加的内容。它在对象销毁之前会被自动调用,用于释放内存。其语法格式具体如下:
function __destruct(){
//清理操作
}
但需要注意的是,析构方法的名称必须为 __destruct(),且析构方法中不带任何参数,接下来通过案例来深入了解析构方法的使用。
例3-7
<?php
class Person{
public function show(){
echo "大家好,我是Person类的对象<br>";
}
//声明析构方法,在对象销毁前自动调用
function __destruct(){
echo "对象被销毁";
}
}
$p1 = new Person();
$p1->show();
?>
运行结果

在例3-7中,第7-9行代码定义了Person 类的析构方法。在程序结束前,会销毁创建的$p1对象,此时会调用$p1的析构方法,井在浏览器中输出” 对象被销毁。
多学一招:垃圾回收
在PHP中使用了一种“垃圾回收”机制。即自动清理不再使用的对象,释放内存,析构方法也会自动被调用。所以在一般情况下不需要手动调用析构方法,只需明确析构方法的在何时被调用的即可。
浅谈PHP面向对象编程(三、构造方法和析构方法)的更多相关文章
- 浅谈PHP面向对象编程(九、设计模式)
9.0 设计模式 在编写程序时经常会遇到一此典型的问题或需要完成某种特定需求,设计模式就是针对这些问题和需求,在大量的实践中总结和理论化之后优选的代码结构编程风格,以及解决问题的思考方式. 设计模式就 ...
- 浅谈python面向对象编程和面向过程编程的区别
面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现,使用的时候再一个个的依次调用即可. 优点:性能高 缺点:相较于面向对象而言,不易维护,不易复用,不易扩展 适合于小型的项目面向对象 ...
- 浅谈PHP面向对象编程(二、基础知识)
和一些面向对象的语言有所不同,PHP并不是一种纯面向对象的语言,包PIP它支持面向对象的程序设计,并可以用于开发大型的商业程序.因此学好面向对象输程对PHP程序员来说也是至关重要的.本章并针对面向对象 ...
- 浅谈PHP面向对象编程(一、简介)
传统的面向过程 将要完成的工作,分作若干个步骤,或再细分为子步骤,然后后步骤从前往后一步一步完成,最初达致目标. 现代的面向对象 将要完成的工作拆分为“一个一个对象”的任务(功能),每个对象独自完成自 ...
- 浅谈PHP面向对象编程(八、多态)
8.0 多态 在设计一个成员方法时,通常希望该方法具备一定的通用性.例如要实现一个动物叫的方法,由于每个动物的叫声是不同的,因此可以在方法中接收-个动物类型的参数的对象当传人猫类对象时就发出猫类的叫 ...
- 浅谈PHP面向对象编程(七、抽象类与接口)
7.0 抽象类与接口 当定义一个类时,常常需要定义一些方法来描述该类的行为特征.但有时这些方法的实现方式是无法确定的,此时就可以使用抽象类和接口. 抽象类和接口用于提高程序的灵活性.抽象类是一种特殊的 ...
- 浅谈PHP面向对象编程(六、自动加载及魔术方法)
6.0 自动加载及魔术方法 6.1 自动加载 在PHP开发过程中,如果希望从外部引入一个class.通常会使用incluae和requre方法把定义这个class的文件包含进来.但是,在大型的开发项 ...
- 浅谈PHP面向对象编程(五、继承)
5.0 继承 5.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使许多事物之间形成一种关系体系 . 例如猫和狗都属于动物,程序中 ...
- 浅谈PHP面向对象编程(四、类常量和静态成员)
4.0 类常量和静态成员 通过上几篇博客我们了解到,类在实例化对象时,该对象中的成员只被当前对象所有.如果希望在类中定义的成员被所有实例共享. 此时可以使用类常量或静态成员来实现,接下来将针对类常量和 ...
随机推荐
- (四) ffmpeg filter学习-filter命令学习
http://blog.csdn.net/joee33/article/details/51946712 http://blog.csdn.net/tkp2014/article/details/53 ...
- 桔子桑Blog(小程序)V 0.4
这两天对这个个人博客小程序的UI又作了一些补充,目前看来,小程序的主要功能如下: 1.博客/日常栏目的导航切换 为了避免两个模块的UI上的过于单一,我将两个模块的列表页作了区分: 边距是自适应的(针对 ...
- spring boot 教程(一) 构建我的第一个Spring boot
Spring Boot特点 1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自动配置Spring 5. 提供生产就绪型功能,如指标, ...
- EasyPusher RTSP推流/EasyRTMP RTMP推流Android安卓摄像头视频偏暗的问题解决方案
本文转自EasyDarwin团队成员JOHN的博客:http://blog.csdn.net/jyt0551/article/details/75730226 在我们测试EasyPusher/Easy ...
- autoconf / automake工具使用介绍
本文转自:http://blog.csdn.net/gulansheng/article/details/42683809 一.简介 作为Linux下的程序开发人员,一定都遇到过Makefile,用m ...
- Ubuntu下使用openssl为apache2配置ssl
安装apache2 sudo apt-get install apache2 安装openssl 一般系统自带,可以通过openssl version查看,如果没有, sudo apt-get ins ...
- SPOJ Favorite Dice(数学期望)
BuggyD loves to carry his favorite die around. Perhaps you wonder why it's his favorite? Well, his d ...
- BZOJ4590 Shoi2015 自动刷题机 【二分】
BZOJ4590 Shoi2015 自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机–一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简 ...
- 实现一个 WPF 版本的 ConnectedAnimation
Windows 10 的创造者更新为开发者们带来了 Connected Animation 连接动画,这也是 Fluent Design System 的一部分.它的视觉引导性很强,用户能够在它的帮助 ...
- hbase单机及集群安装配置,整合到hadoop
问题导读:1.配置的是谁的目录conf/hbase-site.xml,如何配置hbase.rootdir2.如何启动hbase?3.如何进入hbase shell?4.ssh如何达到互通?5.不安装N ...