代码之家  ›  专栏  ›  技术社区  ›  Saladin Akara

PHP继承问题

  •  1
  • Saladin Akara  · 技术社区  · 14 年前

    class foo {
        function __construct() {
            // Some code
        }
    }
    

    然后使用继承创建:

    class bar extends foo {
        // Some code
    }
    

    当我实例化类'bar'时,它会自动执行'foo'中的\uu构造方法吗?还是我需要做一些其他的事情来执行该方法?

    4 回复  |  直到 14 年前
        1
  •  5
  •   bcat    14 年前

    manual

    注意:父构造函数不是 如果子类 定义构造函数。

    虽然文档没有显式地声明它,但是这句话的反义词也是正确的,也就是说,如果子类没有定义构造函数,则隐式地调用父构造函数。因此,在您的示例中,实例化 bar 我会打电话的 foo::__construct

        2
  •  2
  •   The Surrican    14 年前

    如果成功,父类的构造函数将被继承。 如果在instaciated类中定义新构造函数,它将重写父类的构造函数。如果仍然要执行父构造函数,则应该包括

    parent::__construct(); 
    

    在这个被宣布的类的构造器中

        3
  •  1
  •   Matchu    14 年前

    __construct 会继续下去的,是的。

    当您希望向该函数添加某些内容时,问题就出现了,即 parent 上课很方便。

    class bar extends foo {
        $this->doSomethingElse();
        parent::__construct();
    }
    
        4
  •  0
  •   Hydrino    14 年前