توفر هذه الحزمة طبقة تجريد لإنشاء ملفات 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 ;
سيقوم المثال التالي بإنشاء حدث ليوم واحد مع ملخص ووصف. يمكن العثور على المزيد من الأمثلة في المجلد/الأمثلة.
<?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 .