Heim > Backend-Entwicklung > PHP-Tutorial > php的类里可以有两个构造函数?

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-06 20:39:57
Original
1717 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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

回复内容:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

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

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

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

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

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

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

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

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

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

Verwandte Etiketten:
php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
PHP-Datenerfassung?
Aus 1970-01-01 08:00:00
0
0
0
PHP-Erweiterung intl
Aus 1970-01-01 08:00:00
0
0
0
Wie man PHP gut lernt
Aus 1970-01-01 08:00:00
0
0
0
Mehrere PHP-Versionen
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage