Этот пакет предлагает уровень абстракции для создания файлов iCalendars. Используя этот пакет PHP, вы можете создавать файлы *.ics
не зная основного формата. Сам вывод будет максимально соответствовать RFC 5545.
Вы можете установить этот пакет с помощью Composer, выполнив следующую команду:
composer require eluceo/ical
Первоначальная версия была выпущена еще в 2012 году. Версия 2 этого пакета представляет собой полную переработку пакета и несовместима со старой версией. Если вы хотите перейти с версии 0.*
на 2.*
, ознакомьтесь с руководством по обновлению. Если вы только начинаете использовать этот пакет, вам следует установить версию 2.
Версия | PHP-версия |
---|---|
>= 2,15 | 8,3 - 8,4 |
< 2,14 | 7,4 - 8,3 |
0,16.* | 7,0 - 8,2 |
0.11.* | 5.3.0 - 7,4 |
Посетите ical.poerschke.nrw для получения полной документации.
Классы в этом пакете сгруппированы в два пространства имен:
Domain
содержит информацию о событиях.Presentation
содержит преобразование из Domain
в файл *.ics
.Первым шагом для создания календаря будет создание соответствующих объектов домена. Затем эти объекты можно преобразовать в PHP-представление iCalendar, которое можно преобразовать в строку.
В этом очень простом примере отображается пустое событие. Вы узнаете, как создать объект домена событий, как добавить его в календарь и как преобразовать его в компонент iCalendar.
$ event = new Eluceo iCal Domain Entity Event ();
$ calendar = new Eluceo iCal Domain Entity Calendar ([ $ event ]);
$ iCalendarComponent = ( new Eluceo iCal Presentation Factory CalendarFactory ())-> createCalendar ( $ calendar );
file_put_contents ( ' calendar.ics ' , ( string ) $ iCalendarComponent );
header ( ' Content-Type: text/calendar; charset=utf-8 ' );
header ( ' Content-Disposition: attachment; filename="cal.ics" ' );
echo $ iCalendarComponent ;
В следующем примере будет создано однодневное событие со сводкой и описанием. Больше примеров можно найти в папке example/.
<?php
require_once __DIR__ . ' /../vendor/autoload.php ' ;
// 1. Create Event domain entity
$ event = ( new Eluceo iCal Domain Entity Event ())
-> setSummary ( ' Christmas Eve ' )
-> setDescription ( ' Lorem Ipsum Dolor... ' )
-> setOccurrence (
new Eluceo iCal Domain ValueObject SingleDay (
new Eluceo iCal Domain ValueObject Date (
DateTimeImmutable:: createFromFormat ( ' Y-m-d ' , ' 2030-12-24 ' )
)
)
);
// 2. Create Calendar domain entity
$ calendar = new Eluceo iCal Domain Entity Calendar ([ $ event ]);
// 3. Transform domain entity into an iCalendar component
$ componentFactory = new Eluceo iCal Presentation Factory CalendarFactory ();
$ calendarComponent = $ componentFactory -> createCalendar ( $ calendar );
// 4. Set headers
header ( ' Content-Type: text/calendar; charset=utf-8 ' );
header ( ' Content-Disposition: attachment; filename="cal.ics" ' );
// 5. Output
echo $ calendarComponent ;
Этот пакет выпущен под лицензией MIT .