From 526ebfaea9b1b7c112e5525683e14b80bcf93011 Mon Sep 17 00:00:00 2001 From: Tim Siebels Date: Sat, 27 Feb 2016 15:20:17 -0800 Subject: [PATCH] Implement DateTimeImmutable::createFromMutable Summary:Closes #6805 Closes https://github.com/facebook/hhvm/pull/6846 Reviewed By: JoelMarcey Differential Revision: D2957341 Pulled By: JoelMarcey fb-gh-sync-id: caf85837f4d4320d5b2df0839d6a7b34196a850c shipit-source-id: caf85837f4d4320d5b2df0839d6a7b34196a850c --- hphp/system/php/date/datetimeimmutable.php | 6 ++++++ .../DateTimeImmutable_createFromMutable.php | 9 +++++++++ .../DateTimeImmutable_createFromMutable.php.expectf | 13 +++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php create mode 100644 hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php.expectf diff --git a/hphp/system/php/date/datetimeimmutable.php b/hphp/system/php/date/datetimeimmutable.php index d3374bc54fe12..2b94a497392d1 100644 --- a/hphp/system/php/date/datetimeimmutable.php +++ b/hphp/system/php/date/datetimeimmutable.php @@ -99,6 +99,12 @@ public static function createFromFormat( return $out; } + public static function createFromMutable(DateTime $datetime) { + $out = new DateTimeImmutable(); + $out->data = clone $datetime; + return $out; + } + public static function getLastErrors(): array { return DateTime::getLastErrors(); } diff --git a/hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php b/hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php new file mode 100644 index 0000000000000..db564169df053 --- /dev/null +++ b/hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php @@ -0,0 +1,9 @@ + diff --git a/hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php.expectf b/hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php.expectf new file mode 100644 index 0000000000000..e83e8d1b8f6f2 --- /dev/null +++ b/hphp/test/slow/ext_datetime/DateTimeImmutable_createFromMutable.php.expectf @@ -0,0 +1,13 @@ +object(DateTimeImmutable)#%d (1) { + ["data":"DateTimeImmutable":private]=> + object(DateTime)#%d (3) { + ["date"]=> + string(26) "2014-03-02 16:24:08.000000" + ["timezone_type"]=> + int(3) + ["timezone"]=> + string(%s) "%s" + } +} + +Catchable fatal error: Argument 1 passed to DateTimeImmutable::createFromMutable() must be an instance of DateTime, DateTimeImmutable given in %s/DateTimeImmutable_createFromMutable.php on line 7