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 相关文章推荐
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
PHP详解ASCII码对照表与字符转换
Dec 05 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 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
笑谈配置,使用Smarty技术
2007/01/04 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
简述JS控制台的使用
2018/07/15 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
python使用smtplib模块通过gmail实现邮件发送的方法
2015/05/08 Python
pip命令无法使用的解决方法
2018/06/12 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
pytorch SENet实现案例
2020/06/24 Python
如何在python中判断变量的类型
2020/07/29 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
芬兰灯具网上商店:Nettilamppu.fi
2018/06/30 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
给校长的建议书200字
2014/05/16 职场文书
2014年医生工作总结
2014/11/21 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
培训简讯范文
2015/07/20 职场文书
考研经验交流会策划书
2015/11/02 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript