for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Recurrence;
use Recurrence\RruleTransformer\DtStartTransformer;
use Recurrence\RruleTransformer\FreqTransformer;
use Recurrence\RruleTransformer\UntilTransformer;
class RecurrenceProvider
{
public function __construct()
$this->freqTransformer = new FreqTransformer();
freqTransformer
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
class MyClass { } $x = new MyClass(); $x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:
class MyClass { public $foo; } $x = new MyClass(); $x->foo = true;
$this->dtStartTransformer = new DtStartTransformer();
dtStartTransformer
$this->untilTransformer = new UntilTransformer();
untilTransformer
}
/**
* @param string $rRule
* @return Recurrence
* @throws \InvalidArgumentException
*/
public function parse($rRule)
if (empty($rRule)) {
throw new \InvalidArgumentException('Empty RRULE');
$recurrence = new Recurrence();
$recurrence->setFrequency($this->freqTransformer->transform($rRule));
if ($periodStartAt = $this->dtStartTransformer->transform($rRule)) {
$recurrence->setPeriodStartAt($periodStartAt);
if ($periodStartAt = $this->untilTransformer->transform($rRule)) {
$recurrence->setPeriodEndAt($periodStartAt);
return $recurrence;
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: