首页 技术 正文
技术 2022年11月10日
0 收藏 490 点赞 3,095 浏览 1322 个字

今天看ecshop源码的时候发现 构造函数是和类名一样,以前没接触过,一下子疑惑啦

HP4.x 版本:

PHP 4.x 的构造函数名与类名相同。    
    注意:在子类里父类的构造函数不会自动执行。
    要在子类里执行父类的构造函数,必须执行类似以下语句:
      $this->[父类的构造函数名()]

例如:

class base1
    {
      function base1()
      {
        echo ‘this is base1 construct’;
      }
    }

class class1 extends base1
    {
      function class1()
      {
        $this->base1();
        echo ‘this is class1 construct’;
      }
    }
    $c1 = new class1;

PHP5.x 版本:

PHP5.0 以上版本对类的功能进行了很大的扩充。类的构造函数统一命名为__construct()。
    在子类里父类的构造函数会不会执行,分两种情况:
    1,如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。
    2,如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。
       这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:

parent::__construct();

例如:

class base2
    {
      function __construct()
      {
        echo ‘this is base2 construct’;
      }
      function __destruct()
      {
      }
    }

class class2 extends base2
    {
      function __construct()
      {
        parent::__construct();
        echo ‘this is class2 construct’;
      }
    }

注意 parent::__construct(); 语句不一定必须放在子类的构造函数中。放在子类的构造函数中仅仅保证了其在子类被实例化时自动执行。

PHP4.0 和 5.0 类构造函数的兼容问题:

在 PHP5.0 以上版本里,还兼容了 4.0 版本的构造函数的定义规则。如果同时定义了4.0的构造函数和 __construct()函数,则__construct() 函数优先。
    为了使类代码同时兼容 PHP4.0 和 5.0,可以采取以下的方式:

class class3
    {
      function __construct() //for PHP5.0
      {
        echo ‘this is class2 construct’;
      }

function class3() //for PHP4.0
      {
        $this->__construct();
      }
    }

$c3 = new class3;

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,565
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905