在php中,如果A扩展了B,那么当A被实例化时,B的_constrctor()会自动执行吗?或者我必须调用父 - > _构造函数()?在php中继承执行__constructor()继承
3
A
回答
8
PHP寻找最能够找到的最顶层(最接近实例化的类)__construct
的方法。然后它只执行那一个。
Class A {
public function __construct() {
echo "From A";
}
}
Class B extends A {
public function __construct() {
echo "From B";
}
}
Class C extends A {}
Class D extends B {}
Class E extends B {
public function __construct() {
echo "from E";
}
}
new A(); // From A
new B(); // From B
new C(); // From A
new D(); // From B
new E(); // From E
而且parent
访问下一个该名单,直到有没有更多的(此时它会产生一个错误)......
所以,在E
类,运行parent::__construct()
将执行类B
的构造函数。
在类B
中,运行parent::__construct()
将执行类A
的构造函数。
在A
类,运行parent::__construct()
因为没有构造函数会产生一个错误......
1
答案是你必须调用它。
一个简单的测试:
class A {
public function __construct() {
echo 'A';
}
}
class B extends A {
public function __construct() {
echo 'B';
}
}
$ab = new B();
应该告诉你所有你需要知道的。
0
你需要调用“父:: __结构()”从A的构造函数,如果A有一个。否则你不需要。
0
class A {
function __construct() {
echo 5;
}
}
class B_no_Constructor extends A {
}
class B_with_Constructor extends A {
function __construct(){}
}
//try one
//new B_no_Constructor; //outputs 5
//new B_with_Constructor; //outputs nothing
相关问题
- 1. 继承在PHP
- 2. 继承在PHP
- 3. PHP使类继承可继承
- 4. 继承PHP类
- 5. Php继承
- 6. 在xml中继承继承视图
- 7. 其他继承类中的继承类
- 8. PHP继承循环
- 9. Php继承问题
- 10. PHP类继承Codeigniter
- 11. PHP多类继承
- 12. PHP构造继承
- 13. PHP:继承问题
- 14. 了解PHP继承
- 15. 继承问题在PHP
- 16. 例外的继承在PHP
- 17. PHP中的表单继承?
- 18. PHP中的多继承
- 19. PHP中的OOP继承
- 20. PHP中的多级继承
- 21. PHP中的继承类型
- 22. 在jsf中继承
- 23. 继承在Java中
- 24. 继承在Java中
- 25. 继承
- 26. 继承
- 27. 继承
- 28. 继承
- 29. 继承
- 30. 继承
快速而清晰。非常感谢你。 – 2011-01-07 21:11:54