axs*_*uul 2 php datetime design-patterns
我在用什么模式来解决这个问题上遇到了麻烦
class DateTimeReference {
function __construct($time) {
$this = new DateTime($time, new DateTimeZone("UTC"));
}
}
$date = new DateTime("now"); // in server time
$dateref = new DateTimeReference("now"); // in UTC
Run Code Online (Sandbox Code Playgroud)
基本上我想创建一个DateTime
对象的"扩展",但设置时区.当然,这是一个错误,因为您无法重新分配$this
.我不想使用工厂对象 - 任何人都可以向我推荐我如何处理这个问题(或者使用什么模式,例如?).可能是装饰模式?
我不知道这是否适合您想要使用的模式,但它应该有效.
class DateTimeReference extends DateTime {
function __construct(string $time = "now" , DateTimeZone $timezone = NULL ) {
parent::__construct($time, new DateTimeZone("UTC"));
}
}
Run Code Online (Sandbox Code Playgroud)
或者如果您希望用户能够覆盖时区,但如果未设置则默认为UTC:
class DateTimeReference extends DateTime {
function __construct(string $time = "now" , DateTimeZone $timezone = NULL ) {
parent::__construct($time, is_null($timezone) ? new DateTimeZone("UTC") : $timezone );
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2836 次 |
最近记录: |