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

1.0.0 2026-01-26 17:10 UTC

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ライセンスです。