Req #75113 [Ana->Csd]: adding missing DatePeriod::getRecurrences method

From: 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

« previous php.bugs (#220016) next »