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 Simple HTML DOM Parserを使用したスクレイピング方法
PHPでスクレイピングする際、preg_match_all等を用いて必要なデータ ...
-
HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)
HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...
-
PHPでGoogle翻訳を手軽に扱えるライブラリ「google-translate-php」の利用方法
サイト内で一部テキストのGoogle翻訳を行いたい。ただ、Google Clou ...
-
PHP Qr Codeライブラリを使用してQRコードを生成する方法
PHPでQRコードを生成したい。大分前にGoogle Chart APIを用いて ...
-
PHPでルーティング用ライブラリ「AltoRouter」の利用方法
PHPフレームワークのCodeIgniterを勉強していた際にルーティング機能が ...