以下代码段的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
答案 0 :(得分:7)
PHP等价物是
class Foo extends Bar {
public function __construct($param) {
parent::__construct($param);
}
}
这在PHP documentation for constructors中明确提到。
你应该记住C#和PHP之间的重要区别:在PHP中,如果你没有显式调用基础构造函数,它根本就不会被调用!这与C#中的基本构造函数始终调用不同(尽管如果存在公共无参数构造函数,您可以省略显式调用)。
答案 1 :(得分:4)
您正在寻找parent
- 父类的访问者。
通过parent
,您可以调用基类构造函数:parent::__construct($param, $param2)
请参阅:http://php.net/manual/en/keyword.parent.php
请注意,这会直接进入构造函数,如下所示:
public function __construct($x) {
parent::__construct($x);
}