php如何确保父类被构造

发布于 2024-10-13 21:41:08 字数 547 浏览 1 评论 0原文

确保父类始终被构造的最佳方法是什么,因为我们可以轻松地重写构造函数而无需调用它们。

另外:这是不好的做法吗?

abstract class A
{
 // make it final to ensure parent constructor is allways used
 final function __construct($param1)
 {
  // do essencial stuff here with $param1
  // pass construction with remaining args to child
  call_user_func_array(array($this,'init'),array_slice(func_get_args(),1));
 }
 abstract function init();
}

class B extends A
{
 function init($param2)
 {
  // effectively extends parent constructor, no?
 }
}

$obj = new B("p1","p2");

What is the best way to ensure that parent class allways gets constructed, since we can easily override constructors without having to call them at all.

Also: is this bad practice?

abstract class A
{
 // make it final to ensure parent constructor is allways used
 final function __construct($param1)
 {
  // do essencial stuff here with $param1
  // pass construction with remaining args to child
  call_user_func_array(array($this,'init'),array_slice(func_get_args(),1));
 }
 abstract function init();
}

class B extends A
{
 function init($param2)
 {
  // effectively extends parent constructor, no?
 }
}

$obj = new B("p1","p2");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故事和酒 2024-10-20 21:41:08

您可以通过以下方式显式调用父级的构造函数:

parent::__construct(<params>);

另外据我所知,构造函数应该是public

You can explicitly call parent's constructor by calling:

parent::__construct(<params>);

Also as far as I know, constructors should be public.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文