PHPで簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法
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のHTTPクライアント用ライブラリ「Guzzle」の利用方法
以前に「Requests for PHP」を試したが、似たようなライブラリで「G ...
-
-
PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法
PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...
-
-
PHPのバリエーションライブラリ「Valitron」の導入及び利用方法
フォーム等の入力内容チェックをPHP側で行う際、現状は素のPHPで書いているけど ...
-
-
JavaScript / PHPにて「lz-string」を用いてデータの圧縮・展開する方法
文字数が多いGETパラメータを送信したいというケースがあった。また、送信側はJa ...
-
-
PHPでCSVを簡単に取り扱える「LeagueCSV(thephpleague / csv)」の利用方法
PHPでCSVファイルの書き込みや読み込みを行う際、バニラPHPで対応していたが ...