PHP的构造方法,析构方法和this关键字详细介绍


Posted in PHP onOctober 22, 2013

一.什么是构造方法
    构造方法是类的一种特殊的方法,它的主要作用是完成对新对象初始化.
    特点:
1.    没有返回值.
2.    在创建一个新的对象时,系统会自动调用该类的构造方法完成对新对角的初始化.
    语法:
    php5:        修饰符 function __construct()

                        {
                            //code

                        }
    php4:        修饰符 function 类名()

                        {
                            //code

                        }
注意:
   1. php5里对两者都支持,如果两种构造方法同时存在的话,优先选择第一种.
   2. 一个类里面默认有一个不带参数为空的构造方法,一旦自定义了一个构造方法,就会覆盖默认的构造方法.

      所以说一个类有且只有一个构造方法.
   3.一个类只能有一个构造方法.(不能重载)
   4.构造方法默认的访问修饰符为public.
二.this关键字
    this代表当前对象.可以理解为:谁调用它,它就代表谁.
    注意事项:
    this不在类定义的使用,只能在类定义的方法中使用.
三.实例

<?php 
    header("Conter-Type:text/html;charset=utf-8"); 
    class Person 
    { 
        public $name;  //成员变量 
        public $age;        // function __construct() 
        //{ 
          //  echo "不带参数的构造方法"; 
        //} 
        function __construct($name,$age) 
        { 
            $this -> name = $name; 
            $this -> age = $age; 
            echo "带参数的构造方法"."<br />"; 
        } 
        //成员方法 
        function view() 
        { 
            //this的引用. 
            echo "姓名:".$this ->name.", 年龄:".$this ->age; 
        } 
    } 
        //new一个新的对象 
    //$p = new Person(); 
    $p2 = new Person("李四",13); 
    $p2 ->view(); 
?>

结果如下:
    带参数的构造方法

<SPAN style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; FONT: 14px 微软雅黑; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: #ff00ff; WORD-SPACING: 0px" color="#ff00ff">    姓名:李四, 年龄:13</SPAN>

四:析构方法:
    析构方法是PHP5引入的新概念.主要作用:释放资源(比如:释放数据库链接,图片资源...).
    语法:
    function __destruct(){}
    特点:

    1.析构方法没有返回值.

    2.主要作用是释放资源.并不是销毁对象本身.
    3.在销毁对象前,系统自动调用该类的析构方法.

    4.一个类最多只有一个析构方法.

五:例子:

<?php 
    header("Conter-Type:text/html;charset=utf-8");     class Person 
    { 
        public $name; 
        public $age; 
        //构造方法 
        function __construct($name,$age) 
        { 
            $this ->name = $name; 
            $this ->age = $age;  
        } 
        //析构方法 
        function __destruct() 
        { 
            echo "姓名:".$this->name.", 年龄".$this->age."-->销毁<br />"; 
        } 
    } 
    $p1= new Person("小一",18); 
    $p2= new Person("小二",17); 
?>

结果:
    姓名:小二, 年龄17-->销毁
    姓名:小一, 年龄18-->销毁

分析结论:
    1.析构方法会自动调用.

    2.析构方法调用的顺序是先创建的对象后被销毁.

    3.当一个对象没有引用,被垃圾回收机制确认为垃圾时,调用析构方法.

PHP 相关文章推荐
php array_merge下进行数组合并的代码
Jul 22 PHP
php 301转向实现代码
Sep 18 PHP
PHP编实现程动态图像的创建代码
Sep 28 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
IIS安装Apache伪静态插件的具体操作图文
Jul 01 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 PHP
PHP7.0安装笔记整理
Aug 28 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP实现简单登录界面
Oct 23 PHP
实用的简单PHP分页集合包括使用方法
Oct 21 #PHP
使用PHP导出Word文档的原理和实例
Oct 21 #PHP
php与java通过socket通信的实现代码
Oct 21 #PHP
PHP与Java进行通信的实现方法
Oct 21 #PHP
php中生成随机密码的自定义函数代码
Oct 21 #PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 #PHP
PHP中include与require使用方法区别详解
Oct 19 #PHP
You might like
层叠菜单的动态生成
2006/10/09 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
JavaScript中对JSON对象的基本操作示例
2016/05/21 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
Python模拟百度登录实例详解
2016/01/20 Python
python基本语法练习实例
2017/09/19 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
深入理解Python 多线程
2020/06/16 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
python实现计算图形面积
2021/02/22 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
COS美国官网:知名服装品牌
2019/04/08 全球购物
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
六查六看剖析材料
2014/02/15 职场文书
优秀员工演讲稿
2014/05/19 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
推广普通话的宣传语
2015/07/13 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
解决mysql的int型主键自增问题
2021/07/15 MySQL
vue实现列表垂直无缝滚动
2022/04/08 Vue.js