php 面向对象编程之构造方法与析构方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-06 14:11:45 浏览: 评论:0
大多数类都有一种称为构造函数的特殊方法,当创建一个对象时,它将自动调用构造函 数,也就是使用new 这个关键字来实例化对象的时候自动调用构造方法.
构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( ),这是PHP5 中 的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5 中仍然可以用,但 现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不 需要改相应的构造函数名称了,为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP 将搜索一个php4 中的写法,与类名相同名的构造方法.
格式:function __construct ( [参数] ) { ... ... }
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构 造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务,比如对成属 性在创建对象的时候赋初值.
PHP实例代码如下:
- <?php
- /*
- * 1.对象中成员的访问(在一个对象的内部方法中,去访问本对轩昂中的其他方法和成员属性)
- * 2.在对象中的方法中都默认有一个$this关键字,这个关键字代表调用这个方法的对象
- *
- * 构造方法
- *
- * 1.是对象创建完成后,“第一个”“自动调用”的方法
- *
- * 2.构造方法的定义,方法名是一个固定的,
- * 在php4中:和类名相同的方法就是构造方法
- * 在php5中:构造方法选择使用 魔术方法__construct() 所有类中声明构造方法都使用这个名称
- * 优点:在改变类名时,构造方法不用改变
- * 魔术方法: 在类中写出了某个魔术方法,这个方法对应的功能就会添加上
- * 方法名称都是固定的(都是系统提供好的),没有自己定义的
- * 每一个魔术方法,都是在不同时刻为了完成某一功能自动调用的方法
- * 不同的魔术方法有不同的调用时机
- * 都是以 __ 开头的方法
- * __construct(); __destruct(); __set();......
- *
- * 作用:为成员属性初始化;
- *
- *
- * 析构方法
- *
- * 1.当对象被释放之前最后一个“自动”调用的方法
- * 使用垃圾回收器(java php),而c++手动 的释放
- *
- * 作用:关闭一些资源,作一些清理的工作
- *
- * __destruct();
- *
- */
- class Person{
- var $name;
- var $age;
- var $sex;
- //php4中的构造方法
- /*function Person()
- {
- //每声明一个对象都会调用
- echo "1111111111111111";
- }*/
- //php5中的构造方法
- function __construct($name,$age,$sex){
- $this->name=$name;
- $this->age=$age;
- $this->sex=$sex;
- }
- function say(){
- //$this->name;//对象中成员的访问使用$this
- echo "我的名字:{$this->name},我的年龄:{$this->age}<br>"
- }
- function run(){
- }
- function eat(){
- }
- //析构方法
- function __destruct(){
- //开源代码phpfensi.com
- }
- }
- $p1=new Person("zhangsan",25,"男");
- $p2=new Person;
- $p3=new Person;
- ?>
Tags: php构造方法 php析构方法
- 上一篇:php 类中多态的应用
- 下一篇:php 多态与接口学习实现与实例代码
相关文章
- ·php构造方法中析构方法在继承中的表现(2019-09-29)
- ·PHP面向对象程序设计之构造方法和析构方法详解(2021-11-25)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)