recherche

Maison  >  Questions et réponses  >  le corps du texte

php的类里可以有两个构造函数?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<code>class ecs_error

{

    var $_message   = array();

    var $_template  = '';

    var $error_no   = 0;

 

    /**

     * 构造函数

     *

     * @access  public

     * @param   string  $tpl

     * @return  void

     */

    function __construct($tpl)

    {

        $this->ecs_error($tpl);

    }

 

    /**

     * 构造函数

     *

     * @access  public

     * @param   string  $tpl

     * @return  void

     */

    function ecs_error($tpl)

    {

        $this->_template = $tpl;

    }

</code>

已经有了一个__construct(), 还有一个跟类名同名的构造函数ecs_error();
为什么要有两个构造函数?是为了匹配不同的版本吗?

高洛峰高洛峰2877 Il y a quelques jours853

répondre à tous(4)je répondrai

  • 迷茫

    迷茫2017-04-10 15:15:08

    应该是的,PHP4 是用的同名函数做构造函数,而 PHP5 用的是 __construct,具体请参考:

    http://php.net/manual/zh/language.oop5.decon.php
    http://php.net/manual/zh/oop4.constructor.php

    répondre
    0
  • 高洛峰

    高洛峰2017-04-10 15:15:08

    应该不是吧,里面的语句都不一样,至于为啥这么写就不知道了

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-10 15:15:08

    php4 沿袭 C++ 以类名的同名函数作为构造函数
    php5 新增了 __construct 作为构造函数

    由于你的类属性定义是 php4 风格的,所以可认为这个类是在 php4 基础上的扩展
    并非向下兼容,而是画蛇添足

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-10 15:15:08

    这个是为了兼容
    在php4中构造函数采用与类同名的方式进行定义
    在php5中构造函数采用__construct定义

    在php4中不识别__construct,不影响程序正常运行
    在php5中,当二者同时存在时,__construct优先

    关于php的一些知识可以看下视频教程的,很多应该都有讲到
    v8视频 有很多编程方面的视频教程 v8视频

    répondre
    0
  • Annulerrépondre