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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PEAR

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

解決済

PEAR_Error::addTranslationFile()を解決するにはどうしたら良いでしょうか?

mvc_php
mvc_php

総合スコア19

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PEAR

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

1回答

0リアクション

0クリップ

1562閲覧

投稿2019/01/28 11:26

編集2019/01/28 11:34

前提・実現したいこと

サンプルコードを参考に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

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PEAR

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