Req #75113 [Ana->Csd]: adding missing DatePeriod::getRecurrences method
| From: | derick@php.net | Date: | Sun, 17 Mar 2019 18:38:32 +0000 |
| Subject: | Req #75113 [Ana->Csd]: adding missing DatePeriod::getRecurrences method | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-220016@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75113&edit=1
ID: 75113
Updated by: derick@php.net
Reported by: nyamsprod at gmail dot com
Summary: adding missing DatePeriod::getRecurrences method
-Status: Analyzed
+Status: Closed
Type: Feature/Change Request
Package: Date/time related
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Automatic comment on behalf of nyamsprod@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=6eb83a63e1833f0991af4ccccc5533269c8af96c
Log: Fixed bug #75113: Added DatePeriod::getRecurrences() method.
Previous Comments:
------------------------------------------------------------------------
[2017-08-28 08:21:45] nyamsprod at gmail dot com
To be honest one should definetly not rely on those undocumented properties because they are
"broken" the interval property returns a DateInterval object in invalid state and the
enddate/reccurences properties values sometimes are badly inferred.
That's why I thought adding getRecurrences was to be consider a bug fix since:
- it would give full access to the DatePeriod property in a standardized way.
- the others getter methods were added in a patch version of PHP5.6.
- i don't think an RFC is needed for this kind of patch given the other getter methods are
already present and this addition just complement them
------------------------------------------------------------------------
[2017-08-24 14:49:47] requinix@php.net
There are a few undocumented dynamic properties, including one for the number of recurrences (which
is calculated when using an end date).
https://3v4l.org/iGAV1
But don't go using them just yet.
HHVM implements a few properties in the class definition but makes them private: $start, $interval,
$end, $options, $current, $recurrances [sic], and $iterKey. PHP's properties are created on the
object and not defined on the class.
- ReflectionObject: https://3v4l.org/8BKTW
- ReflectionClass: https://3v4l.org/CfZuJ
Since there's already getDateInterval, getEndDate, and getStartDate, maybe making the
properties real and private and creating a getRecurrences would be best.
(HHVM does not have a getRecurr[ae]nces method either)
------------------------------------------------------------------------
[2017-08-24 11:32:29] nyamsprod at gmail dot com
Description:
------------
Currently it is not possible to access the DatePeriod recurrences property when no endDate is
specified.
Expected result:
----------------
$start = new DateTimeImmutable('2012-07-01');
$end = new DateTimeImmutable('2012-07-31');
$interval = new DateInterval('P7D');
$recurrences = 4;
$periodWithRecurrences = new DatePeriod($start, $interval, $recurrences);
$periodWithRecurrences->getRecurrences(); //returns 4
$periodWithRecurrences->getEndDate(); //returns null
$periodWithoutRecurrences = new DatePeriod($start, $interval, $end);
$periodWithoutRecurrences->getRecurrences(); //returns null
$periodWithoutRecurrences->getEndDate(); //returns DateTimeInterface object equivalent to $end
Actual result:
--------------
Fatal error: Uncaught Error: Call to undefined method DatePeriod::getRecurrences()
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=75113&edit=1