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でJavaScriptを圧縮するライブラリ「JShrink」の利用方法
サイト内でJavaScriptを用いる場合、外部のライブラリやプラグインだと圧縮 ...
-
-
PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法
PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...
-
-
PHPで「ramsey/uuid」ライブラリを用いてUUIDを生成する方法
PHPでUUID(Universally Unique Identifier)を ...
-
-
PHPでデータベースを取り扱いやすくなるORMライブラリ「idiorm」の利用方法
Codeigniterでデータベースを取り扱う際にクエリビルダクラスを用いて可読 ...
-
-
phpQueryを利用したjQueryライクなスクレイピング方法
phpQueryというライブラリを使用することでjQueryのセレクタ指定のよう ...