勉強したことのメモ

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

  関連記事

MySQLのバックアップファイルを簡単に作成できるライブラリ「myphp-backup」の利用方法

MySQLのバックアップを取る際にadminerとかから手動で対応するのではなく ...

PHP Qr Codeライブラリを使用してQRコードを生成する方法

PHPでQRコードを生成したい。大分前にGoogle Chart APIを用いて ...

PHP Simple HTML DOM Parserを使用したスクレイピング方法

PHPでスクレイピングする際、preg_match_all等を用いて必要なデータ ...

phpdotenvライブラリを使用してPHPで.envファイルを読み込ませる方法

CodeIgniterを勉強していた際に各種設定は「.env」というファイルに記 ...

phpQueryを利用したjQueryライクなスクレイピング方法

phpQueryというライブラリを使用することでjQueryのセレクタ指定のよう ...