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输出控制功能在简繁体转换中的应用
Oct 09 PHP
一个php作的文本留言本的例子(一)
Oct 09 PHP
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
PHP简洁函数(PHP简单明了函数语法)
Jun 10 PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 PHP
php实现高效获取图片尺寸的方法
Dec 12 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
php通过文件头判断格式的方法
May 28 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
PHP基本语法实例总结
Sep 09 PHP
php中__toString()方法用法示例
Dec 07 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
jquery禁用右键示例
2014/04/28 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
解决vue cli使用typescript后打包巨慢的问题
2019/09/30 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
json跨域调用python的方法详解
2017/01/11 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
工商管理专业应届生求职信
2013/11/04 职场文书
九年级家长会邀请函
2014/01/15 职场文书
写求职信有什么意义
2014/02/17 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
Python+OpenCV实现图片中的圆形检测
2022/04/07 Python
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript