Edit

Calendar

The calendar is basically a collection of events. A calendar can be represented as a .ical file.

Adding events

Events can be either added via the named constructor:

use Eluceo\iCal\Domain\Entity\Calendar;
use Eluceo\iCal\Domain\Entity\Event;

$events = [
    new Event(),
    new Event(),
];

$calendar = new Calendar($events);

or calling the addEvent method:

use Eluceo\iCal\Domain\Entity\Calendar;
use Eluceo\iCal\Domain\Entity\Event;

$calendar = new Calendar();
$calendar
    ->addEvent(new Event())
    ->addEvent(new Event());

or providing a generator, that creates events:

use Eluceo\iCal\Domain\Entity\Calendar;
use Eluceo\iCal\Domain\Entity\Event;

$eventGenerator = function(): Generator {
    yield new Event();
    yield new Event();
};

$calendar = new Calendar($eventGenerator());

Adding time zones

When working with local times, time zone definitions should be added:

use Eluceo\iCal\Domain\Entity\Calendar;
use Eluceo\iCal\Domain\Entity\TimeZone;
use DateTimeZone as PhpDateTimeZone;

$calendar = new Calendar();
$calendar
    ->addTimeZone(TimeZone::createFromPhpDateTimeZone(new PhpDateTimeZone('Europe/Berlin')))
    ->addTimeZone(TimeZone::createFromPhpDateTimeZone(new PhpDateTimeZone('Europe/London')))
;