jgugugiug 发表于 2017-4-10 06:16:10

8.构造方法与析构方法 php

  感谢:本系列文章共23篇,基本囊括PHP开发中OOP思想知识点。虽然为转载,但是他有值得转载的价值,我花了两天的时间看完(附带验证),这一系列文章写的非常不错,在这里感谢" 似曾相识";博客地址:http://www.drupaluser.org/blog;以上23篇文章出处“http://www.drupaluser.org/node/468”这个网站还有不错的其他的DRUPAL知识点。
  

  大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。
构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写法,与类名相同名的构造方法。
格式:function __construct ( [参数] ) { ... ... }
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。

//创建一个人类
  

<?phpclass Person{//下面是人的成员属性var $name; //人的名子var $sex; //人的性别var $age; //人的年龄//定义一个构造方法参数为姓名$name、性别$sex和年龄$agefunction __construct($name, $sex, $age){//通过构造方法传进来的$name给成员属性$this->name赋初使值$this->name=$name;//通过构造方法传进来的$sex给成员属性$this->sex赋初使值$this->sex=$sex;//通过构造方法传进来的$age给成员属性$this->age赋初使值$this->age=$age;}//这个人的说话方法function say(){echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."";}}//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄$p1=new Person(“张三”,”男”, 20);$p2=new Person(“李四”,”女”, 30);$p3=new Person(“王五”,”男”, 40);//下面访问$p1对象中的说话方法$p1->say();//下面访问$p2对象中的说话方法$p2->say();//下面访问$p3对象中的说话方法$p3->say();?>
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
  如图:
http://www.drupaluser.org/sites/default/files/oop-func.png
  析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件, 释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似,一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。
 格式:function __destruct ( ) { ... ... }
<?php//创建一个人类class Person{//下面是人的成员属性var $name; //人的名子var $sex; //人的性别var $age; //人的年龄//定义一个构造方法参数为姓名$name、性别$sex和年龄$agefunction __construct($name, $sex, $age){//通过构造方法传进来的$name给成员属性$this->name赋初使值$this->name=$name;//通过构造方法传进来的$sex给成员属性$this->sex赋初使值$this->sex=$sex;//通过构造方法传进来的$age给成员属性$this->age赋初使值$this->age=$age;}//这个人的说话方法function say(){echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."";}//这是一个析构函数,在对象销毁前调用function __destruct(){echo “再见”.$this->name.””;}}//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄$p1=new Person(“张三”,”男”, 20);$p2=new Person(“李四”,”女”, 30);$p3=new Person(“王五”,”男”, 40);//下面访问$p1对象中的说话方法$p1->say();//下面访问$p2对象中的说话方法$p2->say();//下面访问$p3对象中的说话方法$p3->say();?>
  输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20我的名子叫:李四 性别:女 我的年龄是:30我的名子叫:王五 性别:男 我的年龄是:40
  再见张三
再见李四
再见王五
页: [1]
查看完整版本: 8.构造方法与析构方法 php