我正在嘗試在我自己的類中使用 DateTimeImmutable 類中的方法。
我不明白為什么return parent::format('Y-m-d H:i')不回傳 string 2022-10-01 15:38,在檔案中它看起來應該是:https public format(string $format): string ://www.php.net/manual/en/class.datetimeimmutable.php 。
為什么它不回傳字串?
<?php
class CastsDateTime extends DateTimeImmutable
{
public function __construct(string $date)
{
parent::__construct($date);
return parent::format('Y-m-d H:i');
}
}
$date = new CastsDateTime('2022-10-01T15:38');
var_export($date); /* returns
CastsDateTime::__set_state(array(
'date' => '2022-10-01 15:38:00.000000',
'timezone_type' => 3,
'timezone' => 'UTC',
)) */
最終解決方案
class CastsDateTime extends DateTimeImmutable
{
// public function __construct(string $date)
public function __invoke()
{
// parent::__construct($date);
return parent::format('Y-m-d H:i');
}
}
echo (new CastsDateTime('2022-10-01T15:38'))();
// $date = new CastsDateTime('2022-10-01T15:38');
// var_export($date);
/* returns
CastsDateTime::__set_state(array(
'date' => '2022-10-01 15:38:00.000000',
'timezone_type' => 3,
'timezone' => 'UTC',
)) */
uj5u.com熱心網友回復:
類的建構式沒有回傳值。如果您需要特殊的格式化方法,請給該方法一個新名稱。覆寫父類的方法不是一個好主意。在這種情況下,您也不需要建構式。
例子:
class CastsDateTime extends DateTimeImmutable
{
public function myFormat()
{
return parent::format('Y-m-d H:i');
}
}
$dt = new CastsDateTime();
echo $dt->myFormat();
演示:https ://3v4l.org/tQ87q
通過您的擴展 CastsDateTime 您當然也可以使用父類的所有方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525721.html
標籤:php约会时间哎呀
