iCal
2.14.0
该包提供了用于创建 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
文件的转换。要创建日历,第一步是创建相应的域对象。然后这些对象可以转换为 iCalendar PHP 表示形式,可以转换为字符串。
在这个非常基本的示例中,它呈现一个空事件。您将学习如何创建事件域对象、如何将其添加到日历以及如何将其转换为 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 ;
以下示例将创建一个包含摘要和描述的单日事件。更多示例可以在示例/文件夹中找到。
<?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 许可证发布的。