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 相关文章推荐
NOT NULL 和NULL
Jan 15 PHP
php图像处理类实例
Jul 28 PHP
php基础教程
Aug 26 PHP
php简单的上传类分享
May 15 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
浅谈PHP面向对象之访问者模式+组合模式
May 22 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
Oct 19 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
php GUID生成函数和类
2014/03/10 PHP
php导出excel格式数据问题
2014/03/11 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
php实现简易计算器
2020/08/28 PHP
如何将网页表格内容导入excel
2014/02/18 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python命令行解析模块详解
2018/02/01 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python 学习教程之networkx
2019/04/15 Python
python按比例随机切分数据的实现
2019/07/11 Python
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
庆国庆活动总结
2014/08/28 职场文书
员工辞职信怎么写
2015/02/27 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
苹果可能正在打击不进行更新的 App
2022/04/24 数码科技