質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

Q&A

0回答

1936閲覧

PEAR::Calenderパッケージの使い方について

退会済みユーザー

退会済みユーザー

総合スコア0

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

0グッド

0クリップ

投稿2017/12/17 16:13

2点質問があります

①Weeks.phpは/usr/share/pear/Calendar/Month/Weeks.phpにあり、
test.phpは/var/www/html/test.phpにあります。
この場合なぜrequire_once 'Calendar/Month/Weeks.php';でインクルードできているのでしょうか?

②$calendar->build()
$days = $calendar->fetch()
$days->build()
$day = $days->fetch()
と二回buildとfetchがされているのはなぜなのでしょうか?var_dumpで$calendarと$daysを見てもよくわかりませんでした。

よろしくお願いいたします。

ファイル名test.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link href="print_calendar.css" rel="stylesheet"> <title>カレンダーを表示したい</title> </head> <body> <div> <?php // Strictエラーが発生する場合 error_reporting(E_ALL & ~E_STRICT); // StrictエラーとDeprecatedエラーが発生する場合 //error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); require_once 'Calendar/Month/Weeks.php'; # 曜日に表示する文字列とCSSクラス名を設定します。 $weekdayDefines = array(array('日', 'sunday'), array('月', 'monday'), array('火', 'tuesday'), array('水', 'wednesday'), array('木', 'thursday'), array('金', 'friday'), array('土', 'saturday')); # カレンダーの左側に表示させる曜日を設定します。 $weekdayBase = 0; // 0:日曜~6:土曜 # カレンダーに表示する年月を取得します。 // デフォルトの年月を設定 $year = (int) date('Y'); $month = (int) date('n'); // GETパラメータが指定されている場合は値を検証してから表示年月を取得 if (isset($_GET['year_month'])) { $yyyymm = trim($_GET['year_month']); // YYYYMM形式であれば年月を取得 if (preg_match('/\A([12]\d{3})(1[012]|0[1-9])\z/', $yyyymm, $match)) { $year = (int) $match[1]; $month = (int) $match[2]; } } # カレンダーデータを生成します。 $calendar = new Calendar_Month_Weeks($year, $month, $weekdayBase); $calendar->build(); # カレンダーの曜日部分を表示します。 $thisMonth = $calendar->thisMonth(true); // 今月 $prevMonth = $calendar->prevMonth(true); // 先月 $nextMonth = $calendar->nextMonth(true); // 来月 $prevMonthUrl = '?year_month=' . date('Ym', $prevMonth); $nextMonthUrl = '?year_month=' . date('Ym', $nextMonth); $thisMonthText = date('Y/m', $thisMonth); ?> <table class="calendar"> <thead> <tr> <td><a href="<?php echo $prevMonthUrl; ?>">&lt;&lt;</a></td> <th colspan="5"><?php echo $thisMonthText; ?></th> <td><a href="<?php echo $nextMonthUrl; ?>">&gt;&gt;</a></td> </tr> <tr> <?php for ($i = 0; $i < 7; $i++) { $weekday = ($weekdayBase + $i) % 7; $weekdayText = $weekdayDefines[$weekday][0]; $weekdayClass = $weekdayDefines[$weekday][1]; echo '<th class="' . $weekdayClass . '">', $weekdayText, '</th>'; } ?> </tr> </thead> <tbody> <?php # カレンダーの日付部分を表示します。 while ($days = $calendar->fetch()) { $days->build(); $weekday = 0; echo '<tr>'; while ($day = $days->fetch()) { $weekdayClass = $weekdayDefines[$weekday][1]; if ($day->isEmpty()) { $dayText = "&nbsp;"; } else { $dayText = $day->thisDay(); } echo '<td class="' . $weekdayClass . '">', $dayText, '</td>'; $weekday++; } echo '</tr>'; } ?> </tbody> </table> </div> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問