Skip to content

讀取輸入

請依 .ics 資料來源選擇方法;任何方法成功後都會回傳相同的 Calendar 物件。

字串

php
$calendar = ICalendar::read($contents);
$calendar = ICalendar::tryRead($contents);

$contents 是完整 iCalendar bytes,不是路徑或 URL。read() 回傳 CalendartryRead() 會在內容不是合法 iCalendar 文件時回傳 null。兩者遇到檔案過大或設定 錯誤時仍會拋出對應例外。

本機路徑

php
$calendar = ICalendar::fromPath($path);
$calendar = ICalendar::tryFromPath($path);

$path 必須是存在、可讀的一般本機檔案,URL wrapper 會被拒絕。可能拋出 CalendarFileNotFoundCalendarFileUnreadableCalendarTooLargeInvalidConfigurationtry 版本不會隱藏這些錯誤。

Stream

php
$stream = fopen($path, 'rb');
try {
    $calendar = ICalendar::fromStream($stream);
} finally {
    fclose($stream);
}

$stream 接受可讀的 PHP stream resource,並從目前位置開始讀。套件不會幫你回到 開頭或關閉 stream。傳入的值不是 stream,或 stream 只能寫入時,會拋出 InvalidCalendarSource,I/O 失敗則為 CalendarFileUnreadabletryFromStream() 只把 InvalidCalendar 轉成 null

UploadedFile

php
$calendar = ICalendar::fromUploadedFile($request->file('calendar'));
$calendar = ICalendar::tryFromUploadedFile($request->file('calendar'));

$file 必須是 Illuminate\Http\UploadedFile,用來取得 Laravel request 上傳的 .ics 內容。Client MIME 與 filename 不能證明檔案內容合法。呼叫前應先驗證 request 確實包含 檔案。

拋出例外或回傳 null

情況read*()try*()
不合法的 iCalendar 內容InvalidCalendarnull
檔案遺失/不可讀來源例外同一例外
無效 stream/uploadInvalidCalendarSource同一例外
超過 max_bytesCalendarTooLarge同一例外
無效設定InvalidConfiguration同一例外

想知道內容不合法的原因時使用 read*();只需要知道使用者提供的行事曆無效時, 使用會回傳 nulltry*()

Last updated:

使用 MIT License 發佈。