PEAR – Calendar

9月 7, 2010 · Posted in PEAR, PEAR::Calendar, PHP · Comment 

PEAR::Calendar。PEARのカレンダーモジュールを使ってみる。

インストール

パッケージのインストール。
安定版が存在しないのでベータ版をダウンロードする。

D:\xampp\php>pear install calendar
Failed to download pear/calendar within preferred state “stable”, latest release
is version 0.5.5, stability “beta”, use “channel://pear.php.net/calendar-0.5.5″
to install
install failed

D:\xampp\php>pear install calendar-beta
WARNING: channel “pear.php.net” has updated its protocols, use “pear channel-upd
ate pear.php.net” to update
Did not download optional dependencies: pear/Date, use –alldeps to download aut
omatically
pear/Calendar can optionally use package “pear/Date”
downloading Calendar-0.5.5.tgz …
Starting to download Calendar-0.5.5.tgz (58,159 bytes)
…………..done: 58,159 bytes
install ok: channel://pear.php.net/Calendar-0.5.5

D:\xampp\php>

サンプルコードの実行

公式ページのサンプルスクリプト(お急ぎの方用 — お湯をかけるだけのように…)を実行してみる

<?php
require_once 'Calendar/Month/Weekdays.php';

$month = new Calendar_Month_Weekdays(date('Y'), date('n'));
$month->build();

echo "<table>\n";

while ($day = $Month->fetch()) {
    if ($day->isFirst()) {
        echo "<tr>\n";
    }

    if ($day->isEmpty()) {
        echo "<td>&nbsp;</td>\n";
    } else {
        echo '<td>'.$day->thisDay()."</td>\n";
    }

    if ($day->isLast()) {
        echo "</tr>\n";
    }
}

echo "</table>\n";
?>

結果

おー、簡単。
実際に使うときは、テンプレートエンジン(Smartyとか)と組み合わせたほうがスッキリする。

年月の取得

require_once 'Calendar/Month/Weekdays.php';

$month = new Calendar_Month_Weekdays(date('Y'), date('n'));
$month->build();

// (略)

print $month->year;
print $month->month;

カレンダーの開始曜日を設定する

$month = new Calendar_Month_Weekdays(date("Y"), date("n"), 0);

コンストラクタに3つめの引数を設定して制御する。0=日曜日,1=月曜日…6=土曜日。なぜか定数はなし。

週間カレンダーの作成・取得

require_once "Calendar/Week.php";

$week = new Calendar_Week(date("Y"), date("n"), date("d") ,0);
$week->build();

while ($day = $week->fetch()) {
	print_r($day->day);
	print "<hr>";
}
?>

結果

何週目か取得(ドキュメント

$week->thisWeek("n_in_month");