]> granicus.if.org Git - php/commitdiff
Implemented FR #71520
authorMichael Moravec <mail@majkl578.cz>
Mon, 17 Apr 2017 16:06:20 +0000 (18:06 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 2 Jun 2017 22:54:34 +0000 (00:54 +0200)
Adding the DateTime constants to the DateTimeInterface interface.

NEWS
ext/date/php_date.c
ext/date/tests/DateTimeImmutable_constants.phpt [new file with mode: 0644]
ext/date/tests/DateTimeInterface_constants.phpt [new file with mode: 0644]
ext/date/tests/DateTime_constants.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 2a65522381ad0cfec86aaec02c7ec8f65a05c619..5b6a9ba1b47a61e326baefb3fd77455025935042 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -73,6 +73,8 @@ PHP                                                                        NEWS
   . Fixed bug #74080 (add constant for RFC7231 format datetime). (duncan3dc)
   . Fixed bug #74639 (implement clone for DatePeriod and DateInterval).
     (andrewnester)
+  . Implemented FR #71520 (Adding the DateTime constants to the
+    DateTimeInterface interface). (Majkl578)
 
 - Dba:
   . Fixed bug #72885 (flatfile: dba_fetch() fails to read replaced entry).
index ac08f361ad9d2748b59e05a36beec70e2c63194e..5bd9b8ee5dba8bd92f59039532348e29b99fd084 100644 (file)
@@ -2064,6 +2064,23 @@ static void date_register_classes(void) /* {{{ */
        date_ce_interface = zend_register_internal_interface(&ce_interface);
        date_ce_interface->interface_gets_implemented = implement_date_interface_handler;
 
+#define REGISTER_DATE_INTERFACE_CONST_STRING(const_name, value) \
+       zend_declare_class_constant_stringl(date_ce_interface, const_name, sizeof(const_name)-1, value, sizeof(value)-1);
+
+       REGISTER_DATE_INTERFACE_CONST_STRING("ATOM",             DATE_FORMAT_RFC3339);
+       REGISTER_DATE_INTERFACE_CONST_STRING("COOKIE",           DATE_FORMAT_COOKIE);
+       REGISTER_DATE_INTERFACE_CONST_STRING("ISO8601",          DATE_FORMAT_ISO8601);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC822",           DATE_FORMAT_RFC822);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC850",           DATE_FORMAT_RFC850);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC1036",          DATE_FORMAT_RFC1036);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC1123",          DATE_FORMAT_RFC1123);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC7231",          DATE_FORMAT_RFC7231);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC2822",          DATE_FORMAT_RFC2822);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC3339",          DATE_FORMAT_RFC3339);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED);
+       REGISTER_DATE_INTERFACE_CONST_STRING("RSS",              DATE_FORMAT_RFC1123);
+       REGISTER_DATE_INTERFACE_CONST_STRING("W3C",              DATE_FORMAT_RFC3339);
+
        INIT_CLASS_ENTRY(ce_date, "DateTime", date_funcs_date);
        ce_date.create_object = date_object_new_date;
        date_ce_date = zend_register_internal_class_ex(&ce_date, NULL);
@@ -2076,23 +2093,6 @@ static void date_register_classes(void) /* {{{ */
        date_object_handlers_date.get_gc = date_object_get_gc;
        zend_class_implements(date_ce_date, 1, date_ce_interface);
 
-#define REGISTER_DATE_CLASS_CONST_STRING(const_name, value) \
-       zend_declare_class_constant_stringl(date_ce_date, const_name, sizeof(const_name)-1, value, sizeof(value)-1);
-
-       REGISTER_DATE_CLASS_CONST_STRING("ATOM",             DATE_FORMAT_RFC3339);
-       REGISTER_DATE_CLASS_CONST_STRING("COOKIE",           DATE_FORMAT_COOKIE);
-       REGISTER_DATE_CLASS_CONST_STRING("ISO8601",          DATE_FORMAT_ISO8601);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC822",           DATE_FORMAT_RFC822);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC850",           DATE_FORMAT_RFC850);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC1036",          DATE_FORMAT_RFC1036);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC1123",          DATE_FORMAT_RFC1123);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC7231",          DATE_FORMAT_RFC7231);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC2822",          DATE_FORMAT_RFC2822);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC3339",          DATE_FORMAT_RFC3339);
-       REGISTER_DATE_CLASS_CONST_STRING("RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED);
-       REGISTER_DATE_CLASS_CONST_STRING("RSS",              DATE_FORMAT_RFC1123);
-       REGISTER_DATE_CLASS_CONST_STRING("W3C",              DATE_FORMAT_RFC3339);
-
        INIT_CLASS_ENTRY(ce_immutable, "DateTimeImmutable", date_funcs_immutable);
        ce_immutable.create_object = date_object_new_date;
        date_ce_immutable = zend_register_internal_class_ex(&ce_immutable, NULL);
diff --git a/ext/date/tests/DateTimeImmutable_constants.phpt b/ext/date/tests/DateTimeImmutable_constants.phpt
new file mode 100644 (file)
index 0000000..a3e7c0c
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+DateTimeImmutable constants
+--FILE--
+<?php
+
+var_dump(
+    DATE_ATOM    === DateTimeImmutable::ATOM,
+    DATE_COOKIE  === DateTimeImmutable::COOKIE,
+    DATE_ISO8601 === DateTimeImmutable::ISO8601,
+    DATE_RFC822  === DateTimeImmutable::RFC822,
+    DATE_RFC850  === DateTimeImmutable::RFC850,
+    DATE_RFC1036 === DateTimeImmutable::RFC1036,
+    DATE_RFC1123 === DateTimeImmutable::RFC1123,
+    DATE_RFC2822 === DateTimeImmutable::RFC2822,
+    DATE_RFC3339 === DateTimeImmutable::RFC3339,
+    DATE_RSS     === DateTimeImmutable::RSS,
+    DATE_W3C     === DateTimeImmutable::W3C
+);
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
diff --git a/ext/date/tests/DateTimeInterface_constants.phpt b/ext/date/tests/DateTimeInterface_constants.phpt
new file mode 100644 (file)
index 0000000..972714c
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+DateTimeInterface constants
+--FILE--
+<?php
+
+var_dump(
+    DATE_ATOM    === DateTimeInterface::ATOM,
+    DATE_COOKIE  === DateTimeInterface::COOKIE,
+    DATE_ISO8601 === DateTimeInterface::ISO8601,
+    DATE_RFC822  === DateTimeInterface::RFC822,
+    DATE_RFC850  === DateTimeInterface::RFC850,
+    DATE_RFC1036 === DateTimeInterface::RFC1036,
+    DATE_RFC1123 === DateTimeInterface::RFC1123,
+    DATE_RFC2822 === DateTimeInterface::RFC2822,
+    DATE_RFC3339 === DateTimeInterface::RFC3339,
+    DATE_RSS     === DateTimeInterface::RSS,
+    DATE_W3C     === DateTimeInterface::W3C
+);
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
diff --git a/ext/date/tests/DateTime_constants.phpt b/ext/date/tests/DateTime_constants.phpt
new file mode 100644 (file)
index 0000000..44e8401
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+DateTime constants
+--FILE--
+<?php
+
+var_dump(
+    DATE_ATOM    === DateTime::ATOM,
+    DATE_COOKIE  === DateTime::COOKIE,
+    DATE_ISO8601 === DateTime::ISO8601,
+    DATE_RFC822  === DateTime::RFC822,
+    DATE_RFC850  === DateTime::RFC850,
+    DATE_RFC1036 === DateTime::RFC1036,
+    DATE_RFC1123 === DateTime::RFC1123,
+    DATE_RFC2822 === DateTime::RFC2822,
+    DATE_RFC3339 === DateTime::RFC3339,
+    DATE_RSS     === DateTime::RSS,
+    DATE_W3C     === DateTime::W3C
+);
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)