勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法

  PHP

PHPでカレンダーを描写したいということがたまにある。今までバニラPHPで書いていたが「月曜日始まり or 日曜日始まり」「1週目と最終週の空カラムの計算」等が面倒。ライブラリで何とかならないか調べたところ「PHP Calendar(benhall14 / php-calendar)」が良さそう。以下に実装方法をメモ。

 

やりたいこと

  • PHPでカレンダーをtableタグで描写したい
  • 年月を指定すると当該月のカレンダーを表示
  • CSSに関しては未設定にしたい
  • 日本語表記
  • 月曜日始まりにしたい

 

PHP Calendar(benhall14 / php-calendar)

公式サイト

https://conobe.co.uk/projects/php-calendar/

GitHub

https://github.com/benhall14/php-calendar

 

インストール

composerでインストールする場合

サーバにSSH接続し以下コマンドでインストールする。

composer require benhall14/php-calendar

手動でインストールする場合

公式サイトからCalendar.phpをダウンロードし、適当なディレクトリにアップロードする。今回はこちらの方法を取った。

 

利用方法

ソースコード

<?php
require 'src/phpCalendar/Calendar.php';

use benhall14\phpCalendar\Calendar as Calendar;

$calendar = new Calendar;
$calendar->stylesheet(false);

//曜日の日本語化
$calendar->setDays([
    'sunday' => [
        'initials' => '日',
        'full' => '日',
    ],
    'monday' => [
        'initials' => '月',
        'full' => '月',
    ],
    'tuesday' => [
        'initials' => '火',
        'full' => '火',
    ],
    'wednesday' => [
        'initials' => '水',
        'full' => '水',
    ],
    'thursday' => [
        'initials' => '木',
        'full' => '木',
    ],
    'friday' => [
        'initials' => '金',
        'full' => '金',
    ],
    'saturday' => [
        'initials' => '土',
        'full' => '土',
    ],
]);

//月の日本語化
$calendar->setMonths([
    'january' => '1月',
    'february' => '2月',
    'march' => '3月',
    'april' => '4月',
    'may' => '5月',
    'june' => '6月',
    'july' => '7月',
    'august' => '8月',
    'september' => '9月',
    'october' => '10月',
    'november' => '11月',
    'december' => '12月'
]);


//月曜日始まりに設定
$calendar->useMondayStartingDate();
$calendar->display(date('Y-m-d'));

「$calendar->display(date('Y-m-d'));」の部分で表示するカレンダーの年月を指定できる。2024年12月を指定したい場合は「date('2024-12-01')」になる。

実運用の際は「翌月」「前月」みたいなリンクを設置し「?ym=2024-12-01」等のGETパラメータを付与するような形になる。

デフォルトのCSSを読み込ませない

カレンダーを表示させるとデフォルトのCSSがインラインで指定される。Calendar.phpの以下部分をコメントアウトすることでCSSを読み込まなくなる。

public function display($date = false, $color = false)
{
    #以下をコメントアウト
    #echo $this->stylesheet();
    echo $this->draw($date, $color);
}

年月の表示を「M月 YYYY」から「YYYY年M月に変更」

Calendar.phpを以下の通り変更する。

#変更前
$calendar .= $this->months[strtolower($date->format('F'))] . ' ' . $date->format('Y');

#変更後
$calendar .= $date->format('Y') . '年' . $this->months[strtolower($date->format('F'))];

 

所感

composer無しでも導入可&ファイル1枚のライブラリなので気軽に使いやすい。PHPでカレンダーの描写するということはたまにしかないけど、今後あれば使っていきたい。

尚、曜日や年月部分を英語表記するということはあまりなさそうなので、$calendar->setDaysで指定するよりもライブラリを直接変更した方が後で使いまわしやすい上、カレンダー描写側のソースコード記述量も減りそう。

 - PHP

  関連記事

PHPでシンプルな英数字のCAPTCHAを「Gregwar / Captcha」ライブラリで実装する方法

PHPでシンプルなランダム英数字のCAPTCHAを実装したい。「Gregwar ...

PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法

PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...

PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法

PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...

PHPでエラーメッセージを見やすくするwhoopsの利用方法

PHPのエラーメッセージが見づらい。これはこういうもの、と諦めていたがCodei ...

PHPのエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法

ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及 ...