- ベストアンサー
phpのクラスにて別ファイルの変数について
PHPのクラス内で別ファイルで定義した変数を呼び出したく "require_once"でそのファイルを読みこみその変数を呼び出したのですが 「Notice: Undefined variable:」のエラーが表示されました。 他のクラスではないphpプログラムでは正常に表示されましたが クラスでは別の方法で表示する必要があるのでしょうか。 可能であればその手段もご提示頂ければ幸いです。 どなたかご教示頂けないでしょうか。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
メソッド内で、読み込むなら、「require_once」を使ったらダメです。 恐らくそのmakeStudyListメソッドは、何度か実行するメソッドなのではないですか。 二回目に呼び出したときにはそのファイルは読み出し済みなので、読み込めません。 require_onceの記述を、requireに直したらエラーが出なくなるんじゃないでしょうか。
その他の回答 (3)
- duron
- ベストアンサー率77% (73/94)
関数内部で使用してませんか? 変数のスコープが問題になってるんじゃないかと思います。 http://search.net-newbie.com/php/language.variables.scope.html
- mpro-gram
- ベストアンサー率74% (170/228)
require した場所によって、global だったりlocalだったりしますので、そのせいでしょう。 1,クラス定義の前に require すると、global 変数になります クラスメソッド内から呼び出すには、メソッド内で使う前に global $hoge ; とするか、 $GLOBALS['hoge']で呼び出します。 2,メソッド内部で require すると、local 変数になります。 そのメソッド内でだけ、$hogeで直接参照できます。
補足
ご回答ありがとうございます。 下記の様にクラス関数内でrequireにて該当ファイルを呼び出し 関数内にて配列を呼び出しているのですが、不可でした。 しかしglobalにて該当配列を宣言すると使用することができました。 関数内でファイルを呼び出しているのにも関わらず、 クラス内ではglobal宣言が必要なのでしょうか。 public function makeStudyList(){ require_once("variableList.php");//配列記述ファイル呼出 foreach ($weekDayJP as &$value){//該当配列 echo "$value"; }
- mpx
- ベストアンサー率71% (149/209)
開示された情報からでは一般論しか言えませんがご了承ください >> 「Notice: Undefined variable:」のエラーが表示されました。 未定義の変数を参照したときにでる情報です。このエラーの場合は どの変数でエラーが出ているかも表示されているはずです。 その変数が参照される前にその変数を初期化する処理を入れてやれば 表示は消えます。 >> 他のクラスではないphpプログラムでは正常に表示されましたが >> クラスでは別の方法で表示する必要があるのでしょうか。 どのように処理された情報を表示しようとしているのかが分かりませんが クラスであるか否かではではなく、使用している変数の扱いに不備が有る ことになります。 ちなみに、エラーでは無くNoticeですので正常に動作しているのであれば、 先頭行(他の処理実行前)に下記行を入れれば 警告表示は消えます error_reporting(E_ALL ^ E_NOTICE);
補足
ご回答ありがとうございます。 正確には変数ではなく配列で中身は $weekDayJP = array("日", "月", "火", "水", "木", "金", "土"); となっておりforeachで値を取り出し表示しております。 それをクラスと通常のPHPとで行っておるのですがクラスでは上記エラーが表示されます。
お礼
ご提示頂いたようにrequireにて呼出すと正常に動作しました。 require_onceとrequireの違いがいまいちよくわかってませんでした。 この度は大変勉強になりました。 ありがとうございます。