前提・実現したいこと
サンプルコードを参考にPHPで六曜を含むカレンダーを作成したいと思っていますが以下のエラーメッセージが発生しました。
PHPのバージョンを5.4や7.2へ変更しましたが7.2へ変更すると異なるエラーになりました。
解決策が見つからずご教授いただけないでしょうか。
何卒宜しくお願い致します。
発生している問題・エラーメッセージ・49行目
Fatal error: Call to undefined method PEAR_Error::addTranslationFile() in
$dh->addTranslationFile($ja, "ja_JP");
該当のソースコード
<?php //パッケージ等の読み込み require_once("Calendar/Month/Weekdays.php"); require_once("Date/Holidays.php"); require_once("./lib/qreki.php"); define ('CALENDAR_FIRST_DAY_OF_WEEK',0); //六曜を配列にいれる $rokuyo = array('大安','赤口','先勝','友引','先負','仏滅'); //カレンダーを表示する時の年を取得 if(!$_GET[year2]){ $year = date("Y"); }else { if(is_numeric($_GET[year2])){ $year = $_GET[year2]; }else{ $year = date("Y"); echo <<<EOM <script type="text/javascript">alert("半角英数で入力して下さい");</script> EOM; } } //カレンダーを表示する時の月を取得 if(!$_GET[month2]){ $month = date("m") + 0; }else{ $month = $_GET[month2]; } $calMonth = new Calendar_Month_Weekdays($year, $month,0); $calMonth->build(); $prev = $calMonth->prevMonth('object'); $p_year = $prev->thisYear(); $p_month = $prev->thisMonth(); $next = $calMonth->nextMonth('object'); $n_year = $next->thisYear(); $n_month = $next->thisMonth(); //祝日判定 // 「Date_Holidays_Japan」インストール先のパスを指定 $ja = "data/Date_Holidays_Japan/lang/Japan/ja_JP.xml"; //ja_JP.xmlのインストール先 $dh = &Date_Holidays::factory("Japan", $year, "ja_JP"); $dh->addTranslationFile($ja, "ja_JP"); $holidays = array(); //祝日の月日をキーに祝日名を配列に格納 foreach ($dh->getHolidays() as $value) { $holidays[$value->getDate()->format("%m%d")] = $value->getTitle(); } //フォーム部分 echo '<h1 style="font-size:25px;">'.$year.'年'.$month.'月<span style="font-size:16px;">のカレンダー</span><span style="font-size:14px;">[六曜、祝日あり!]</span></h1> <div id="cal_hyouji"> <div id="pre_next"> <a href="?year2='.$p_year.'&month2='.$p_month.'"><<前月</a> <a href="http://サイトurl.com">今月</a> <a href="?year2='.$n_year.'&month2='.$n_month.'">次月>></a><br /> </div> <form action="" method="get"> <input type="text" name="year2" value='.$year.' size="5"> <select id="month_search" name="month2"> <option value="1">1月</option><option value="2">2月</option><option value="3">3月</option><option value="4">4月</option><option value="5">5月</option><option value="6">6月</option><option value="7">7月</option><option value="8">8月</option><option value="9">9月</option><option value="10">10月</option><option value="11">11月</option><option value="12">12月</option> </select> <input type="submit" value="の「かれんだー」を見る" class="btn btn btn-large"/> </form> <table id="top_ca"> <thead id="day_line"> <tr> <th class="sun">日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th class="sat">土</th> </tr> </thead> <tbody>'; while ($day = $calMonth->fetch()) { if ($day->isFirst()) { echo '<tr>'; } if ($day->isEmpty()) { echo "<td class=\"empty_d\"> </td>"; }else { $date = sprintf("%02d",$day->thisMonth()).sprintf("%02d",$day->thisDay()); if (array_key_exists($date, $holidays)) { echo "<td class=\"holiday\">";//祝日のとき(cssで色を付けるため) }else if(date("m") == $day->thisMonth() && date("d") == $day->thisDay()) { // 今日の色分けとリンク echo "<td class=\"today\">"; } else if ($day->isFirst()) { echo "<td class=\"sun\">";//週の最初(日曜)のとき(cssで色を付けるため) } else if ($day->isLast()) { echo "<td class=\"sat\">";//週の最後(土曜)のとき(cssで色を付けるため) } else { echo "<td>"; } echo $day->thisDay() //祝日に該当する月日の場合、祝日名を出力 if (array_key_exists($date, $holidays)) { echo "<div class=\"holiday_td\">".$holidays[$date]."</div>"; } //六曜を表示 echo "<div class=\"rokuyou_font\">[".$rokuyo[get_rokuyou($year,$month,$day->thisDay())]."]</div>"; echo "</td>"; } if ($day->isLast()) { echo "</tr>\n"; } } echo '</tbody></table> </div>'; ?>
用意したライブラリ
https://github.com/pear/Date
https://github.com/pear/Calendar
https://github.com/pear/Date_Holidays
https://github.com/pear/Date_Holidays/blob/trunk/lang/Japan/ja_JP.xml
### その他[./lib/qreki.php]
http://jun.2chan.net/script/qreki.php.txt
開発環境
・Windows10 Pro 64bit
・XAMPP 3.2.2
・PHP Version 5.6.40
・PEAR
・Google Chrome 71.0.3578.98
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/29 06:33