Этот пакет предлагает уровень абстракции для создания файлов 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 .