PHPでカレンダーを作るスクリプトを探してみたんですが、なかなかビューとロジックが分かれているものがありませんでした。混然一体となっています。
というのも、PHPでカレンダーのロジックっぽいところを書くのは非常に簡単で、そのせいかなあと思います。
ある月のカレンダーを描画しようとする場合、その月の日数と1日(ついたち)の曜日さえわかれば、あとは数字の羅列ですみます。
PHPの場合、ある月の日数は
$num_of_day = date("t", mktime(0,0,0,$month,1,$year));
の1行です。
ある月の1日(ついたち)の曜日も
// 0=日曜、1=月曜、2=火曜、3=水曜、4=木曜、5=金曜、6=土曜
$first_day = date("w", mktime(0,0,0,$month,1,$year));
の1行で取得できます。
そういうわけですが、もうひとつロジックっぽいところがあるとすれば、祝日です。
いつ祝日なのか。まあ、基本的に固定なのでデータ作ってしまえば終わりなわけですが、振替とかもあるし、やや面倒かもしれません。
というわけで、日付を渡したらその日が祝日なのかどうかを判定する関数を作ってみました。
せっかくなので置いておきます。ちゃんとチェックしてないのでバグだらけの予感。
calendar.zip
まあ、きょうはこんなもんだろ。