ponponumi / calendar_create
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/ponponumi/calendar_create
Requires
- php: >=8.3
- league/csv: ^9.28
Requires (Dev)
- phpunit/phpunit: ^12.5
This package is auto-updated.
Last update: 2026-01-28 18:24:14 UTC
README
概要
Ponponumi\CalendarCreate\CalendarCreate クラスは、指定した年・月のカレンダーを配列または CSV 形式で生成するためのシンプルなユーティリティです。
曜日の開始日(例: 日曜開始/月曜開始)やヘッダー表記(日本語短縮/日本語フル/英語短縮/英語フル/なし)を設定できます。
要求事項
- PHP 8.3 以上 (2026年1月27日現在、PHP8.3.30、PHP8.4.17、PHP8.5.2で動作確認済みです)
- league/csv パッケージ(CSV 出力に利用)
インストール例:
composer require ponponumi/calendar_create
基本的な使い方
<?php require 'vendor/autoload.php'; use Ponponumi\CalendarCreate\CalendarCreate; $cal = new CalendarCreate(2026, 1); // 2026年1月、デフォルトは日曜開始 $cal->headerSet('ja'); // ヘッダーを日本語(短)に設定 // BOM付きUTF-8 CSV を取得 $csv = $cal->csvCreateBOM(); file_put_contents('calendar_utf8_bom.csv', $csv); // Shift-JIS CSV を取得 $csv_sjis = $cal->csvCreateShiftJIS(); file_put_contents('calendar_sjis.csv', $csv_sjis);
コンストラクタ
public function __construct(int $year, int $month, ?int $startDay = null)
- $year: 1000~9999 の範囲で指定
- $month: 1~12 の範囲で指定
- $startDay: オプション。曜日の開始インデックス(0 = 日曜, 1 = 月曜, ...)を指定。省略または null の場合は日曜開始
例外: 範囲外の値を与えると Exception をスローします。
主なメソッド
- yearSet(int $year): void
- monthSet(int $month): void
- startDaySet(int $startDay): void
- sundayStartSet(): void // 日曜開始に設定
- mondayStartSet(): void // 月曜開始に設定
- yearGet(): int
- monthGet(): int
- startDayGet(): int
- prevMonthSet(): void // 前月に変更
- nextMonthSet(): void // 次月に変更
- descriptionMonthFormatSet(?string $format=null): void // 月説明フォーマット設定
- monthFirstDateGet(): string // 例: "2026/1/1"
- monthFirstDayGet(): int // 月初の曜日(0=日曜..6=土曜)
- monthDaysCountGet(): int // その月の日数
- createSettingGet(): array // カレンダー生成に使う設定を配列で返す
- calendarDataCreate(): array // カレンダーの配列データを生成
- csvCreate(bool $utf8bom=false, bool $sjis=false): string // CSV を生成
- csvCreateBOM(): string // CSV を BOM 付き UTF-8 で生成
- csvCreateShiftJIS(): string // CSV を Shift-JIS で生成
- lineBreakCRLFSet(): void // 改行コードをCR+LFに設定
- lineBreakLFSet(): void // 改行コードをLFに設定
- lineBreakGet(): string // 現在の改行コードを取得
ヘッダー設定:
- headerSet(?string $type) でヘッダー表記を選択できます。
- "ja" : 日, 月, 火, ...
- "ja-full": 日曜日, 月曜日, ...
- "en" : Sun, Mon, ...
- "en-full": Sunday, Monday, ...
- null : ヘッダー無し
CSV について:
- csvCreate(true) を使うと BOM 付き UTF-8 が生成されます。
- csvCreate(false, true) を使うと Shift-JIS が生成されます。
- csvCreate(true, true) と指定した場合は、 BOM 付き UTF-8 が優先され、BOM付きUTF-8となります。
BOM付きUTF-8を使う場合はcsvCreateBOMメソッド、Shift-JISを使う場合はcsvCreateShiftJISメソッドを利用することを推奨します。
例: カレンダーデータの配列出力
$cal = new CalendarCreate(2026, 1, 1); // 2026年1月、月曜開始 $cal->headerSet('ja-full'); $data = $cal->calendarDataCreate(); // $data はヘッダー行(設定していれば)と各週ごとの配列を含む print_r($data);
出力例(ヘッダーあり、月曜開始):
[
["月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日", "日曜日"],
["", "", "", 1, 2, 3, 4],
[5, 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17, 18],
[19, 20, 21, 22, 23, 24, 25],
[26, 27, 28, 29, 30, 31, ""]
]
注意点
- 年・月・開始曜日はそれぞれバリデーションがあり、範囲外の値を渡すと Exception が投げられます。
- CSV 生成は内部で league/csv の Writer を使用しています。UTF-8 と Shift-JIS の文字コード変換は実装に依存します。
- 本システムでは、日曜日や祝日を赤、土曜日を青のように、色付けする機能はありません。必要に応じて、生成されたデータを外部で加工してください。
- CSV の改行コードはデフォルトで LF (\n) ですが、lineBreakCRLFSet() メソッドで CR+LF (\r\n) に変更できます。lineBreakLFSet() メソッドで LF (\n) に戻せます。
ライセンス
このライブラリは、MITライセンスです。