首页 / PHP / 是否有可能在PHP中链式重载构造函数?
是否有可能在PHP中链式重载构造函数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了是否有可能在PHP中链式重载构造函数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1394字,纯文字阅读大概需要2分钟。
内容图文
![是否有可能在PHP中链式重载构造函数?](/upload/InfoBanner/zyjiaocheng/802/7efc0ac34ba34c64b173dbf4be2343bb.jpg)
这是一个组成的例子,当有很多参数时它会变得更有用.
这将使调用者使用新的Person(“Jim”,1950,10,2)或new Person(“Jim”,datetimeobj).我知道可选参数,这不是我在这里寻找的.
在C#我可以这样做:
public Person(string name, int birthyear, int birthmonth, int birthday)
:this(name, new DateTime(birthyear, birthmonth, birthday)){ }
public Person(string name, DateTime birthdate)
{
this.name = name;
this.birthdate = birthdate;
}
我可以在PHP中做类似的事情吗?就像是:
function __construct($name, $birthyear, $birthmonth, $birthday)
{
$date = new DateTime("{$birthyear}\\{$birthmonth}\\{$birthyear}");
__construct($name, $date);
}
function __construct($name, $birthdate)
{
$this->name = $name;
$this->birthdate = $birthdate;
}
如果这是不可能的,那么什么是好的选择呢?
解决方法:
为此,我将使用命名/替代构造函数/工厂或其他任何你想要调用它们的东西:
class Foo {
...
public function __construct($foo, DateTime $bar) {
...
}
public static function fromYmd($foo, $year, $month, $day) {
return new self($foo, new DateTime("$year-$month-$day"));
}
}
$foo1 = new Foo('foo', $dateTimeObject);
$foo2 = Foo::fromYmd('foo', 2012, 2, 25);
应该有一个规范的构造函数,但是你可以拥有尽可能多的替代构造函数,这些构造函数都是方便的包装器,它们都引用了规范的构造函数.或者,您可以在通常不在常规构造函数中设置的这些替代构造函数中设置替代值:
class Foo {
protected $bar = 'default';
public static function withBar($bar) {
$foo = new self;
$foo->bar = $bar;
return $foo;
}
}
内容总结
以上是互联网集市为您收集整理的是否有可能在PHP中链式重载构造函数?全部内容,希望文章能够帮你解决是否有可能在PHP中链式重载构造函数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。