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 相关文章推荐
PHP3 safe_mode 失效漏洞
Oct 09 PHP
PHP面向对象的使用教程 简单数据库连接
Nov 25 PHP
火车头采集器3.0采集图文教程
Mar 17 PHP
php获取mysql版本的几种方法小结
Mar 25 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
9段PHP实用功能的代码推荐
Oct 14 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
8个PHP数组面试题
Jun 23 PHP
php处理json格式数据经典案例总结
May 19 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
php上传后台无法收到数据解决方法
Oct 28 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
详解JavaScript编程中的window与window.screen对象
2015/10/26 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
Europcar比利时:租车
2019/08/26 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
什么是索引指示器
2012/08/20 面试题
会计毕业生求职简历的自我评价
2013/10/20 职场文书
体育课课后反思
2014/04/24 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
基于Python编写一个监控CPU的应用系统
2022/06/25 Python