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初学者们头痛的十四个问题
Jan 15 PHP
我的php学习笔记(毕业设计)
Feb 21 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
Jun 24 PHP
php的XML文件解释类应用实例
Sep 22 PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
PHP实现文件上传功能实例代码
May 18 PHP
php中文乱码问题的终极解决方案汇总
Aug 01 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
详细分析PHP7与PHP5区别
Jun 26 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
php email邮箱正则
2008/10/08 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
详解Python中的文件操作
2016/08/28 Python
Python 文件处理注意事项总结
2017/04/10 Python
python opencv之分水岭算法示例
2018/02/24 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
详解Django中六个常用的自定义装饰器
2018/07/04 Python
Python 导入文件过程图解
2019/10/15 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
Python json转字典字符方法实例解析
2020/04/13 Python
python脚本和网页有何区别
2020/07/02 Python
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
init进程的作用
2012/04/12 面试题
为什么要做架构设计
2015/07/08 面试题
机械系大学毕业生推荐信
2013/11/27 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
springboot读取nacos配置文件
2022/05/20 Java/Android