4

以下代码段的 PHP 代码等效项是什么:

C#代码:

class Composite : Component
  {
    private List<Component> _children = new List<Component>();

    // Constructor
    public Composite(string name) : base(name)
    {
    }
  }

PHP代码?

我正在寻找: base(name)部分。C# 中的完整代码参考可以在这里找到http://www.dofactory.com/Patterns/PatternComposite.aspx

4

2 回答 2

7

PHP 等价物是

class Foo extends Bar {
    public function __construct($param) {
        parent::__construct($param);
    }
}

这在构造函数的 PHP 文档中明确提到。

您应该记住 C# 和 PHP 之间的一个重要区别:在 PHP 中,如果您不显式调用基本构造函数,则根本不会调用它!这与 C# 中的不同,后者始终调用基本构造函数(尽管如果存在公共无参数构造函数,则可以省略显式调用)。

于 2012-05-15T17:25:23.927 回答
4

您正在寻找parent- 父类的访问器。

通过parent您可以调用基类构造函数:parent::__construct($param, $param2)

见: http: //php.net/manual/en/keyword.parent.php

请注意,这直接进入构造函数,如下所示:

public function __construct($x) {
    parent::__construct($x);
}
于 2012-05-15T17:25:47.433 回答