Skip to content

Commit 637714c

Browse files
Majkl578nikic
authored andcommitted
Implemented FR #71520
Adding the DateTime constants to the DateTimeInterface interface.
1 parent d988661 commit 637714c

File tree

5 files changed

+115
-17
lines changed

5 files changed

+115
-17
lines changed

NEWS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ PHP NEWS
7373
. Fixed bug #74080 (add constant for RFC7231 format datetime). (duncan3dc)
7474
. Fixed bug #74639 (implement clone for DatePeriod and DateInterval).
7575
(andrewnester)
76+
. Implemented FR #71520 (Adding the DateTime constants to the
77+
DateTimeInterface interface). (Majkl578)
7678

7779
- Dba:
7880
. Fixed bug #72885 (flatfile: dba_fetch() fails to read replaced entry).

ext/date/php_date.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2064,6 +2064,23 @@ static void date_register_classes(void) /* {{{ */
20642064
date_ce_interface = zend_register_internal_interface(&ce_interface);
20652065
date_ce_interface->interface_gets_implemented = implement_date_interface_handler;
20662066

2067+
#define REGISTER_DATE_INTERFACE_CONST_STRING(const_name, value) \
2068+
zend_declare_class_constant_stringl(date_ce_interface, const_name, sizeof(const_name)-1, value, sizeof(value)-1);
2069+
2070+
REGISTER_DATE_INTERFACE_CONST_STRING("ATOM", DATE_FORMAT_RFC3339);
2071+
REGISTER_DATE_INTERFACE_CONST_STRING("COOKIE", DATE_FORMAT_COOKIE);
2072+
REGISTER_DATE_INTERFACE_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601);
2073+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC822", DATE_FORMAT_RFC822);
2074+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC850", DATE_FORMAT_RFC850);
2075+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC1036", DATE_FORMAT_RFC1036);
2076+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC1123", DATE_FORMAT_RFC1123);
2077+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC7231", DATE_FORMAT_RFC7231);
2078+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC2822", DATE_FORMAT_RFC2822);
2079+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339);
2080+
REGISTER_DATE_INTERFACE_CONST_STRING("RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED);
2081+
REGISTER_DATE_INTERFACE_CONST_STRING("RSS", DATE_FORMAT_RFC1123);
2082+
REGISTER_DATE_INTERFACE_CONST_STRING("W3C", DATE_FORMAT_RFC3339);
2083+
20672084
INIT_CLASS_ENTRY(ce_date, "DateTime", date_funcs_date);
20682085
ce_date.create_object = date_object_new_date;
20692086
date_ce_date = zend_register_internal_class_ex(&ce_date, NULL);
@@ -2076,23 +2093,6 @@ static void date_register_classes(void) /* {{{ */
20762093
date_object_handlers_date.get_gc = date_object_get_gc;
20772094
zend_class_implements(date_ce_date, 1, date_ce_interface);
20782095

2079-
#define REGISTER_DATE_CLASS_CONST_STRING(const_name, value) \
2080-
zend_declare_class_constant_stringl(date_ce_date, const_name, sizeof(const_name)-1, value, sizeof(value)-1);
2081-
2082-
REGISTER_DATE_CLASS_CONST_STRING("ATOM", DATE_FORMAT_RFC3339);
2083-
REGISTER_DATE_CLASS_CONST_STRING("COOKIE", DATE_FORMAT_COOKIE);
2084-
REGISTER_DATE_CLASS_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601);
2085-
REGISTER_DATE_CLASS_CONST_STRING("RFC822", DATE_FORMAT_RFC822);
2086-
REGISTER_DATE_CLASS_CONST_STRING("RFC850", DATE_FORMAT_RFC850);
2087-
REGISTER_DATE_CLASS_CONST_STRING("RFC1036", DATE_FORMAT_RFC1036);
2088-
REGISTER_DATE_CLASS_CONST_STRING("RFC1123", DATE_FORMAT_RFC1123);
2089-
REGISTER_DATE_CLASS_CONST_STRING("RFC7231", DATE_FORMAT_RFC7231);
2090-
REGISTER_DATE_CLASS_CONST_STRING("RFC2822", DATE_FORMAT_RFC2822);
2091-
REGISTER_DATE_CLASS_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339);
2092-
REGISTER_DATE_CLASS_CONST_STRING("RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED);
2093-
REGISTER_DATE_CLASS_CONST_STRING("RSS", DATE_FORMAT_RFC1123);
2094-
REGISTER_DATE_CLASS_CONST_STRING("W3C", DATE_FORMAT_RFC3339);
2095-
20962096
INIT_CLASS_ENTRY(ce_immutable, "DateTimeImmutable", date_funcs_immutable);
20972097
ce_immutable.create_object = date_object_new_date;
20982098
date_ce_immutable = zend_register_internal_class_ex(&ce_immutable, NULL);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
--TEST--
2+
DateTimeImmutable constants
3+
--FILE--
4+
<?php
5+
6+
var_dump(
7+
DATE_ATOM === DateTimeImmutable::ATOM,
8+
DATE_COOKIE === DateTimeImmutable::COOKIE,
9+
DATE_ISO8601 === DateTimeImmutable::ISO8601,
10+
DATE_RFC822 === DateTimeImmutable::RFC822,
11+
DATE_RFC850 === DateTimeImmutable::RFC850,
12+
DATE_RFC1036 === DateTimeImmutable::RFC1036,
13+
DATE_RFC1123 === DateTimeImmutable::RFC1123,
14+
DATE_RFC2822 === DateTimeImmutable::RFC2822,
15+
DATE_RFC3339 === DateTimeImmutable::RFC3339,
16+
DATE_RSS === DateTimeImmutable::RSS,
17+
DATE_W3C === DateTimeImmutable::W3C
18+
);
19+
20+
?>
21+
--EXPECT--
22+
bool(true)
23+
bool(true)
24+
bool(true)
25+
bool(true)
26+
bool(true)
27+
bool(true)
28+
bool(true)
29+
bool(true)
30+
bool(true)
31+
bool(true)
32+
bool(true)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
--TEST--
2+
DateTimeInterface constants
3+
--FILE--
4+
<?php
5+
6+
var_dump(
7+
DATE_ATOM === DateTimeInterface::ATOM,
8+
DATE_COOKIE === DateTimeInterface::COOKIE,
9+
DATE_ISO8601 === DateTimeInterface::ISO8601,
10+
DATE_RFC822 === DateTimeInterface::RFC822,
11+
DATE_RFC850 === DateTimeInterface::RFC850,
12+
DATE_RFC1036 === DateTimeInterface::RFC1036,
13+
DATE_RFC1123 === DateTimeInterface::RFC1123,
14+
DATE_RFC2822 === DateTimeInterface::RFC2822,
15+
DATE_RFC3339 === DateTimeInterface::RFC3339,
16+
DATE_RSS === DateTimeInterface::RSS,
17+
DATE_W3C === DateTimeInterface::W3C
18+
);
19+
20+
?>
21+
--EXPECT--
22+
bool(true)
23+
bool(true)
24+
bool(true)
25+
bool(true)
26+
bool(true)
27+
bool(true)
28+
bool(true)
29+
bool(true)
30+
bool(true)
31+
bool(true)
32+
bool(true)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
--TEST--
2+
DateTime constants
3+
--FILE--
4+
<?php
5+
6+
var_dump(
7+
DATE_ATOM === DateTime::ATOM,
8+
DATE_COOKIE === DateTime::COOKIE,
9+
DATE_ISO8601 === DateTime::ISO8601,
10+
DATE_RFC822 === DateTime::RFC822,
11+
DATE_RFC850 === DateTime::RFC850,
12+
DATE_RFC1036 === DateTime::RFC1036,
13+
DATE_RFC1123 === DateTime::RFC1123,
14+
DATE_RFC2822 === DateTime::RFC2822,
15+
DATE_RFC3339 === DateTime::RFC3339,
16+
DATE_RSS === DateTime::RSS,
17+
DATE_W3C === DateTime::W3C
18+
);
19+
20+
?>
21+
--EXPECT--
22+
bool(true)
23+
bool(true)
24+
bool(true)
25+
bool(true)
26+
bool(true)
27+
bool(true)
28+
bool(true)
29+
bool(true)
30+
bool(true)
31+
bool(true)
32+
bool(true)

0 commit comments

Comments
 (0)