codephix / ical
eluceo/iCal 包提供创建 iCalendars 的抽象层。您可以通过使用 PHP 对象而不是手动编写 *.ics 文件来轻松创建 iCal 文件。输出将尽可能遵循 RFC 5545。
2.0
2023-03-10 15:50 UTC
Requires
- php: >=7.4
- ext-mbstring: *
- symfony/deprecation-contracts: ^2.1 || ^3.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.23.1
- friendsofphp/php-cs-fixer: ^3.4
- infection/infection: ^0.23 || ^0.26
- phpmd/phpmd: ^2.13
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.8 || ^5.0
Conflicts
- php: 7.4.6
README
此包提供创建 iCalendars 文件的抽象层。通过使用此 PHP 包,您可以在不了解底层格式的情况下创建 *.ics 文件。输出本身将尽可能遵循RFC 5545。
浏览项目
安装
您可以通过运行以下命令使用 Composer 安装此包
composer require eluceo/ical
版本 / 升级
最初版本于 2012 年发布。此包的版本 2 是对该包的完整重写,与旧版本不兼容。如果您想从版本 0.*
迁移到 2.*
,请参阅升级指南。如果您刚开始使用此包,应安装版本 2。
文档
请访问 ical.poerschke.nrw 以获取完整文档。
用法
此包中的类分为两个命名空间
Domain
包含关于事件的信息。Presentation
包含将Domain
转换为 *.ics 文件的过程。
要创建日历,第一步是创建相应的领域对象。然后,可以将这些对象转换为 iCalendar PHP 表示形式,并将其转换为字符串。
空事件
在此基本示例中,将渲染一个空事件。您将了解如何创建事件领域对象,如何将其添加到日历中,以及如何将其转换为 iCalendar 组件。
1. 创建事件领域实体
$event = new \Eluceo\iCal\Domain\Entity\Event();
2. 创建日历领域实体
$calendar = new \Eluceo\iCal\Domain\Entity\Calendar([$event]);
3. 将日历领域对象转换为表示对象
$iCalendarComponent = (new \Eluceo\iCal\Presentation\Factory\CalendarFactory())->createCalendar($calendar);
4. a) 保存到文件
file_put_contents('calendar.ics', (string) $iCalendarComponent);
4. b) 通过 HTTP 发送
header('Content-Type: text/calendar; charset=utf-8'); header('Content-Disposition: attachment; filename="cal.ics"'); echo $iCalendarComponent;
完整示例
以下示例将创建一个包含摘要和描述的单日事件。更多示例可以在 examples/ 文件夹中找到。
<?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 许可证 发布。