当前位置:  编程技术>php

php构造函数与析构函数 php内存管理函数

    来源: 互联网  发布时间:2014-08-30

    本文导语:  在php编程中, 大多数类都有一种称为构造函数的特殊方法。 当创建一个对象时,它将自动调用构造函数,通常用它执行一些有用的初始化任务。构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。 这是php5...

在php编程中, 大多数类都有一种称为构造函数的特殊方法。
当创建一个对象时,它将自动调用构造函数,通常用它执行一些有用的初始化任务。构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。
这是php5中的变化,以前的版本中,构造函数的名称必须与类名相同。
为了向下兼容,如果一个类中没有名为 __construct( )的方法,php将搜索一个与类名相同的方法。
例子:
 

代码示例:

 

与构造函数相对的就是析构函数。析构函数是php5新添加的内容,在php4中没有析构函数。析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,这些操作或功能通常在所有对该类的引用都被重置或超出作用域时自动发生。 与构造函数的名称类似,一个类的析构函数名称必须是__ destruct()。析构函数不能带有任何参数。
 

代码示例:

 

如果你在一个类中声明一个函数,命名为__construct,这个函数将被当成是一个构造函数并在建立一个对象实例时被执行。 清楚地说,__是两个下划线。 就像其它任何函数一样,构造函数可能有参数或者默认值。 你可以定义一个类来建立一个对象并将其属性全放在一个语句(statement)中。

你也可以定义一个名为__destruct的函数,php将在对象被销毁前调用这个函数。 它称为php析构函数。

继承是类的一个强大功能。 一个类(子类/派生类)可以继承另一类(父类/基类)的功能。 派生类将包含有基类的所有属性和方法,并可以在派生类中加上其他属性和方法。 你也可以覆写基类的方法和属性。 就像3。1。2中显示的,你可以用extends关键字来继承一个类。

你可能想知道构造函数是如何被继承的。 当它们和其它方法一起被继承时,他们不会在创建对象时被执行。 如果你需要这个功能,你需要用到::运算符。 它允许你指向一块命名空间。 parent指向父类命名空间,你可以用parent::__construct来调用父类的构造函数。

一些面向对象语言在类之后命名构造函数。 php的前几个版本也是如此,到现在这种方法仍然有效。也就是:如果你把一个类命名为animal并且在其中建立一个命名也是animal的方法,则这个 方法就是构造函数。如果一个类的同时拥有__construt构造函数和与类名相同的函数,php将把__construct看作构造函数。这使得用以前 的php版本所写的类仍然可以使用。 但新的脚本(php5)应当使用__construct。

php的这种新的声明构造函数的方法可以使构造函数有一个独一无二的名称,无论它所在的类的名称是什么。 这样你在改变类的名称时,就不需要改变构造函数的名称。

你可能在php中给构造函数一个像其它类方法一样的访问方式。 访问方式将会影响从一定范围内实例化对象的能力。 这允许实现一些固定的设计模式,如singleton模式。

php析构函数,相反于构造函数。 php调用它们来将一个对象从内存中销毁。 默认地,php仅仅释放对象属性所占用的内存并销毁对象相关的资源。 析构函数允许你在使用一个对象之后执行任意代码来清除内存。

当php决定你的脚本不再与对象相关时,php析构函数将被调用。 在一个函数的命名空间内,这会发生在函数return的时候。 对于全局变量,这发生于脚本结束的时候。 如果你想明确地销毁一个对象,你可以给指向该对象的变量分配任何其它值。 通常将变量赋值为null或者调用unset 。

以下例子,计算从类中实例化的对象的个数。 counter类从构造函数开始增值,在php析构函数减值。

一旦你定义了一个类,你可以用new来建立一个这个类的实例。 类的定义是设计图,实例则是放在装配线上的元件。
new需要类的名称,并返回该类的一个实例。 如果构造函数需要参数,你应当在new后输入参数。
例子:
 

代码示例:

 

程序运行结果:
1
2
1
当新建一个php析构函数实例,内存会被准备来存储所有属性。
每个实例有自己独有的一组属性。
但方法是由该类的所有实例共享的。

您可能感兴趣的文章:
  • php5构造函数与析构函数实例
  • php构造函数与析构函数实例分析
  • php 构造函数与析构函数应用实例
  • php构造函数与析构函数
  • php构造函数和析构函数学习
  • php构造函数与析构函数初探
  • php构造函数与析构函数实例详解
  • PHP构造函数的深入理解
  • php构造函数的小例子
  • php 构造函数实例 定义类级别以控制类的行为

    
 
 

您可能感兴趣的文章:

  • PHP的substr() 函数用法
  • php构造函数与析构函数
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • php构造函数与析构函数初探
  • php session_id()函数介绍及代码实例
  • PHP中的Pack()函数,Java有哪个函数与之对应???
  • php中session_id()函数详细介绍,会话id生成过程及session id长度
  • php数组函数之array_combine() 数组合并函数
  • php将html特殊字符转换成html字符串的函数:htmlspecialchars()介绍及代码举例
  • php构造函数和析构函数学习
  • php使用socket_bind()函数绑定IP地址
  • php trim函数执行过程解析
  • php将unix时间戳转换成字符串时间函数(date)
  • php递归函数小例子
  • php通过pack和unpack函数实现对二进制数据封装及解析
  • php sprintf函数用法 php浮点数格式
  • php时间格式化函数date介绍及用法参考
  • php递归示例 php递归函数代码
  • PHP 框架 Pop php iis7站长之家
  • 在php中如何用exec()函数运行mv命令
  • php递归使用示例(php递归函数)
  • PHP编程语言中的构造器
  • php5构造函数与析构函数实例
  • php构造函数与析构函数解析
  • php构造函数与析构函数实例详解
  • PHP采用XML-RPC构造Web Service实例教程
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php探针不显示cpu、内存、硬盘信息原因分析
  • php出现内存位置访问无效错误问题解决方法
  • php共享内存段示例分享
  • php统计时间与内存使用情况
  • php统计时间和内存使用情况示例分享
  • IBM THINKPAD 380D 16M内存 /2G硬盘 能装什么版本的LINUX 主要是想学PHP+MYSQL+APACHE下的网站开发?
  • 单台服务器的PHP进程之间实现共享内存的方法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • php输入流php://input使用示例(php发送图片流到服务器)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP转换器 HipHop for PHP
  • PHP去除html标签,php标记及css样式代码参考
  • PHP 框架 Pop php
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • PHP的JavaScript框架 PHP.JS
  • php通过socket_bind()设置IP地址代码示例
  • php服务器探针显示php服务器信息
  • php安装完成后如何添加mysql扩展
  • PHP缓存加速器 Alternative PHP Cache (APC)
  • PHP介绍及学习网站推荐
  • PHP源文件加密工具 PHP Screw
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • PHP自动化测试 PHP-QAT
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • PHP 的 HTTP 客户端库 PHP Buzz
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • PHP 调试工具 PHP_Dyn


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3