jsvrcek / ics
创建多字节安全的 RFC 5545 兼容 .ics 文件的抽象层
0.8.5
2023-01-17 22:16 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ^4.8 || ^5.5 || >=6.0
README
ICS
用于创建(和最终读取).ics iCal 文件的面向对象 PHP 库。
- 此项目尚不支持 .ics 格式的所有功能。
安装
使用 composer
composer require jsvrcek/ics
1. 基本用法
use Jsvrcek\ICS\Model\Calendar; use Jsvrcek\ICS\Model\CalendarEvent; use Jsvrcek\ICS\Model\Relationship\Attendee; use Jsvrcek\ICS\Model\Relationship\Organizer; use Jsvrcek\ICS\Utility\Formatter; use Jsvrcek\ICS\CalendarStream; use Jsvrcek\ICS\CalendarExport; //setup an event $eventOne = new CalendarEvent(); $eventOne->setStart(new \DateTime()) ->setSummary('Family reunion') ->setUid('event-uid'); //add an Attendee $attendee = new Attendee(new Formatter()); $attendee->setValue('[email protected]') ->setName('Moe Smith'); $eventOne->addAttendee($attendee); //set the Organizer $organizer = new Organizer(new Formatter()); $organizer->setValue('[email protected]') ->setName('Heidi Merkell') ->setLanguage('de'); $eventOne->setOrganizer($organizer); //new event $eventTwo = new CalendarEvent(); $eventTwo->setStart(new \DateTime()) ->setSummary('Dentist Appointment') ->setUid('event-uid'); //setup calendar $calendar = new Calendar(); $calendar->setProdId('-//My Company//Cool Calendar App//EN') ->addEvent($eventOne) ->addEvent($eventTwo); //setup exporter $calendarExport = new CalendarExport(new CalendarStream, new Formatter()); $calendarExport->addCalendar($calendar); //output .ics formatted text echo $calendarExport->getStream();
2. 批量事件提供者
基本用法示例将在内存中构建完整的 .ics 字符串,然后一次性输出所有内容。这对于大型日历将使用大量内存。以下示例展示了如何使 CalendarExport::getStream() 输出 .ics 文件生成的每一行,以及如何在导出期间批量设置提供者以构建日历的事件列表。
use Jsvrcek\ICS\Model\Calendar; use Jsvrcek\ICS\Model\CalendarEvent; use Jsvrcek\ICS\Utility\Formatter; use Jsvrcek\ICS\CalendarStream; use Jsvrcek\ICS\CalendarExport; //setup calendar $calendar = new Calendar(); $calendar->setProdId('-//My Company//Cool Calendar App//EN'); //setup event provider to add events in batches during event iteration in $calendarExport->getStream() $calendar->setEventsProvider(function ($startKey) use ($myDatabase) { //pseudo-code to get a batch of events from database $eventDataArray = $myDatabase->getEventsBatch($startKey); $events = array(); foreach ($eventDataArray as $row) { $event = new CalendarEvent(); $event->setStart($row['start_date']) ->setSummary($row['summary']) ->setUid($row['event_uid']); $events[] = $event; } return $events; }); //setup exporter $calendarExport = new CalendarExport(new CalendarStream, new Formatter()); $calendarExport->addCalendar($calendar); //set exporter to send items directly to output instead of storing in memory $calendarExport->getStreamObject()->setDoImmediateOutput(true); //output .ics formatted text echo $calendarExport->getStream();
待办事项
- Jsvrcek\ICS\Model\CalendarTodo
参考
致谢
许可证
MIT 许可证 (MIT)
版权所有 (c) 2022 Justin Svrcek
特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人免费使用软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的人以本协议规定的条件进行此类行为
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他原因,只要此类责任源于、产生于或与软件或其使用或其他方式有关。