Este pacote oferece uma camada de abstração para a criação de arquivos iCalendars. Ao usar este pacote PHP, você pode criar arquivos *.ics
sem o conhecimento do formato subjacente. A saída em si seguirá o RFC 5545 da melhor maneira possível.
Você pode instalar este pacote usando o Composer, executando o seguinte comando:
composer require eluceo/ical
A versão inicial foi lançada em 2012. A versão 2 deste pacote é uma reescrita completa do pacote e não é compatível com versões anteriores. Consulte o guia de atualização se desejar migrar da versão 0.*
para 2.*
. Se você começar a usar este pacote, deverá instalar a versão 2.
Versão | Versão 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 |
Visite ical.poerschke.nrw para documentação completa.
As classes deste pacote são agrupadas em dois namespaces:
Domain
contém as informações sobre os eventos.Presentation
contém a transformação do Domain
em um arquivo *.ics
.Para criar um calendário, o primeiro passo será criar os objetos de domínio correspondentes. Em seguida, esses objetos podem ser transformados em uma representação PHP do iCalendar, que pode ser convertida em string.
Neste exemplo básico, isso renderiza um evento vazio. Você aprenderá como criar um objeto de domínio de evento, como adicioná-lo a um calendário e como transformá-lo em um componente 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 ;
O exemplo a seguir criará um evento de um único dia com um resumo e uma descrição. Mais exemplos podem ser encontrados na pasta exemplos/.
<?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 ;
Este pacote é lançado sob a licença do MIT .