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 类常量和静态成员 通过上几篇博客我们了解到,类在实例化对象时,该对象中的成员只被当前对象所有.如果希望在类中定义的成员被所有实例共享. 此时可以使用类常量或静态成员来实现,接下来将针对类常量和 ...
随机推荐
-
Swing中弹出对话框的几种方式_JOptionPane.showMessageDialog等详解
Swing中弹出对话框的几种方式_JOptionPane.showMessageDialog等详解 在swing中,基于业务的考量,会有对话框来限制用户的行为及对用户的动作进行提示. Swing中 ...
-
Java基础知识
1.java中的短路与(&&).短路或(||) 与 逻辑与(&).逻辑或(|)有什么区别啊? 最佳答案 &是java中的位逻辑运算: eg: 2&3=2: 分析 ...
-
ural 1252. Sorting the Tombstones
1252. Sorting the Tombstones Time limit: 1.0 secondMemory limit: 64 MB There is time to throw stones ...
-
/proc/uptime详解
From:http://smilejay.com/2012/05/proc_uptime/ 在Linux中,我们常常会使用到uptime命令去看看系统的运行时间,它与一个文件有关,就是/proc/up ...
-
自适应游标共享技术01(Adaptive Cursor Sharing)
什么是ACS(adaptiver cursor sharing) Oracle通过绑定变量技术解决了SQL语句硬解析过多的问题,降低了资源的争用.但是绑定变量在引入cursor sharing,增加了 ...
-
Objective-c单例模式详解
转载自:http://www.jianshu.com/p/85618bcd4fee 单例模式出现以后,关于它的争执就一直存在.在开发项目中,有很多时候我们需要一个全局的对象,而且要保证全局有且仅有一份 ...
-
脱机BT transmission
脱机BT transmission http://192.168.1.1:9091 也可以在使用Transmission Remote软件进行管理,如果下载太慢检查QoS 如果开了防火墙,需要打开默认 ...
-
bzoj 1901: Zju2112 Dynamic Rankings(树套树)
1901: Zju2112 Dynamic Rankings 经典的带改动求区间第k小值问题 树套树模板,我是用的线段树套splay实现的,并且用的数组模拟的,所以可能空间略大,bzoj过了,zoj过 ...
-
【css】盒子模型 之 弹性盒模型
参考: http://caibaojian.com/flexbox-guide.html 待补充啊
-
CodeChef - AMLEX-Poetic word
题目链接 Dhinwaji is an acclaimed poet and likes to play with words and letters. He has bought some sti ...