• ベストアンサー

phpのクラスにて別ファイルの変数について

PHPのクラス内で別ファイルで定義した変数を呼び出したく "require_once"でそのファイルを読みこみその変数を呼び出したのですが 「Notice: Undefined variable:」のエラーが表示されました。 他のクラスではないphpプログラムでは正常に表示されましたが クラスでは別の方法で表示する必要があるのでしょうか。 可能であればその手段もご提示頂ければ幸いです。 どなたかご教示頂けないでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

メソッド内で、読み込むなら、「require_once」を使ったらダメです。 恐らくそのmakeStudyListメソッドは、何度か実行するメソッドなのではないですか。 二回目に呼び出したときにはそのファイルは読み出し済みなので、読み込めません。 require_onceの記述を、requireに直したらエラーが出なくなるんじゃないでしょうか。

harikonoto
質問者

お礼

ご提示頂いたようにrequireにて呼出すと正常に動作しました。 require_onceとrequireの違いがいまいちよくわかってませんでした。 この度は大変勉強になりました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • duron
  • ベストアンサー率77% (73/94)
回答No.3

関数内部で使用してませんか? 変数のスコープが問題になってるんじゃないかと思います。 http://search.net-newbie.com/php/language.variables.scope.html

全文を見る
すると、全ての回答が全文表示されます。
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

require した場所によって、global だったりlocalだったりしますので、そのせいでしょう。 1,クラス定義の前に require すると、global 変数になります クラスメソッド内から呼び出すには、メソッド内で使う前に global $hoge ; とするか、 $GLOBALS['hoge']で呼び出します。 2,メソッド内部で require すると、local 変数になります。 そのメソッド内でだけ、$hogeで直接参照できます。

harikonoto
質問者

補足

ご回答ありがとうございます。 下記の様にクラス関数内でrequireにて該当ファイルを呼び出し 関数内にて配列を呼び出しているのですが、不可でした。 しかしglobalにて該当配列を宣言すると使用することができました。 関数内でファイルを呼び出しているのにも関わらず、 クラス内ではglobal宣言が必要なのでしょうか。 public function makeStudyList(){ require_once("variableList.php");//配列記述ファイル呼出 foreach ($weekDayJP as &$value){//該当配列 echo "$value"; }

全文を見る
すると、全ての回答が全文表示されます。
  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

開示された情報からでは一般論しか言えませんがご了承ください >> 「Notice: Undefined variable:」のエラーが表示されました。 未定義の変数を参照したときにでる情報です。このエラーの場合は どの変数でエラーが出ているかも表示されているはずです。 その変数が参照される前にその変数を初期化する処理を入れてやれば 表示は消えます。 >> 他のクラスではないphpプログラムでは正常に表示されましたが >> クラスでは別の方法で表示する必要があるのでしょうか。 どのように処理された情報を表示しようとしているのかが分かりませんが クラスであるか否かではではなく、使用している変数の扱いに不備が有る ことになります。 ちなみに、エラーでは無くNoticeですので正常に動作しているのであれば、 先頭行(他の処理実行前)に下記行を入れれば 警告表示は消えます error_reporting(E_ALL ^ E_NOTICE);

harikonoto
質問者

補足

ご回答ありがとうございます。 正確には変数ではなく配列で中身は $weekDayJP = array("日", "月", "火", "水", "木", "金", "土"); となっておりforeachで値を取り出し表示しております。 それをクラスと通常のPHPとで行っておるのですがクラスでは上記エラーが表示されます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • クラス内の変数にメソッドからアクセスできない。

    以下のphpのソースで、メソッドcから、クラス内の変数bの値を参照しようとすると"Notice: Undefined variable: b in C:\xampp\htdocs\a.php on line 5"というエラーが出るのですが、どのようにすれば参照できるのか教えてください。 phpのバージョンは5.5.15です。 <?php class A{ private $b = 0; public function c(){ print $b; } } $x = new A; $x->c(); ?>

  • include_once先の別ファイルに変数を渡す

    同じ内容を複数のphpページで表示したいところがあるので、共通のページ(サイドメニューとか)は別に書いておき、include_onceしようと思っているのですが、元のページの変数の引渡しが出来ません(別ファイルでechoしても表示されません)。グローバル変数は表示されるのですが。 どうしたら、変数を受け渡しできるでしょうか?あるいは、include_onceとは別のやり方の方がベターでしょうか?

    • 締切済み
    • PHP
  • phpの定義していない変数について

    phpを使用してwebページの作成を勉強しています。 モードによってphpの内容を変えるページを作成したのですが、 ページを開いた際、モードの変数が入力されていなかったり(最初に開いたとき等)、 前のページのフォーム画面で、 セレクトボックスを何も選択せず送信した空のデータを受け取ると、 Notice:Undefined indexエラーが表示されます。 Noticeエラーを非表示にすれば表示はされなくなるとは思いますが、 根本の解決にはなっていないので後々問題にならないか心配です。 どうしたら空のデータ受け取り時に Notice:Undefined indexエラーが表示されなくなるでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 外部ファイルのクラスのインスタンスが生成できない

    いつもお世話になっております。 PHP(Ver5.2)が利用できるレンタルサーバーを借りていろいろやっているのですが、 include_once した外部PHPファイルの中のクラス定義のコンストラクタがCallされません。 //外部クラスの記述 class A{ public function __construct(){ echo "OK"; } } //メインPHPの記述 include_once "xxx.php"; $obj = new A(); ↑におけるメインPHPをブラウザから呼び出したとき、本来なら OK とechoされるはずなのに、何も表示されません。 また、クラスAに定義したpublicなfunctionをCallしようとすると、定義されてないメソッドをCallした、とエラーになります。(インスタンス自体が生成されていない??) ファイル自体は正常にIncludeされていると思います。(ファイル名を間違ったらエラーになったから) ちなみに、クラスAの記述をメインPHPに記述すると、正常に動きます。 外部ファイルのクラスを正常に動かすにあたって、何かphp.iniあたりの編集が必要なのでしょうか? どうぞよろしくお願いいたします。

    • 締切済み
    • PHP
  • 変数の引き渡し

    php のバージョンが 4.3.9 から 5.3.6 へあがったら、Notice: Undefined variable のメッセージが表示され、正常に動作しなくなってしまいました。 問題の変数は、以下のように、php1 から php2(A.php) に引き渡されている year, month, date で、php2(A.php)では定義していません。 if ( file_exists( $dname ) ) { print '<TD bgcolor="#ffffff"><a href="A.php?year=' . $year.'&month=' . $mo\ nth. '&date=' . $dd . '" target="right">' . $dd . '</a></TD>'; }else{ print '<TD bgcolor="#ffffff">' . $dd . '</a></TD>'; } } ド素人で途方に暮れ、質問いたします。 解決方法をご指南下さい。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPのセッション変数について

    ページの構成が代わり、A-B-Cと順番だったのをA-Cと変更しました。 AからCリンクにとぶように設定したのですが、リンクを変更していてもBのページに行ってしまいます。 このプログラムを作った人に聞きましたところ、 if{session("user_sbt") というセッション変数で、新しく作られた画面のところで何もセットしていなければ初めの画面(B)に戻るというプログラムが走っているそうです。作った人に直してもらえたら良いのですが、事情で日本にはいないので、わかる方教えてください。よろしくお願いします。 PHPファイルの上部には session_start(); require_once("../_common/head.php"); require_once("../_common/mysql.php"); というセッション変数が記入されています。

    • 締切済み
    • PHP
  • phpで別のファイルの変数に代入する方法

    ちょっとややこしくなりますが、よろしくお願いします。 [a.php]と[b.php]というファイルを用意します。 [a.php] ------------------ <?php echo $hogehoge ; ?> ------------------ [b.php] ------------------ <?php $hogehoge = 'hogehoge' ; require('a.php') ; ?> ------------------ という風にして結果を ------------------ hogehoge ------------------ としたいのですが、他のファイルを呼び出す時に変数を指定するにはどうしたら良いのでしょうか。 また、その際に気をつけなければならないことがあれば教えて下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPの変数未定義エラー

    <p>PHPのテストです。</p> <p> <?php print $name.'さん<br />'; ?> </p> と入れてみましたが僕の場合は ------------------------------------------------------------------------ PHPのテストです。 Notice: Undefined variable: name in C:\Program Files\Apache\Apache24\htdocs\sample3-1.php on line 17 さん ------------------------------------------------------------------------- となってしまいました。$name = NULL;をあらかじめ入れておけばこのページのように ------------------------------------------------------------------------- PHPのテストです。 さん ------------------------------------------------------------------------ となってくれます。この違いはバージョンなどの違いでしょうか?

    • ベストアンサー
    • PHP
  • クラスファイルでエラーが出てしまう

    外部クラスファイルを読みこんで実行させたいのですが、次のエラーになってしまいます。 ------------------------エラー文-------------------------------- Fatal error: Cannot instantiate non-existent class: mysql (訳) Fatal error~致命的な instantiate~定数に実数を割り当てる existent~存在する、現在の ---------------------------------------------------------------- エラーが出てる行数のコードは $mysql = new MySQL; の文です。 下記がソースです。 一応require_once("mysql.php")の呼び出しは成功しています。 mysql.php自体をブラウザで直接呼出したところ、エラーはでません。 有識者の方いらっしゃいましたらご教示宜しくお願いします。 ---------------------ソースコード------------------------------- <?php session_start(); //---------------------------------------- // ■ MySQLクラスファイルの取り込み //---------------------------------------- require_once("mysql.php"); //---------------------------------------- // ■ 変数初期化 //---------------------------------------- $sql = ""; $sql2 = ""; $sql3 = ""; $error = ""; //---------------------------------------- // ■ 変数定義 //---------------------------------------- $login_id = $_SESSION["login_id"]; $mail_address = $_SESSION["mail_address"]; $name = $_SESSION["girl_name"]; $age = $_SESSION["age"]; $gyousyu = $_SESSION["gyousyu"]; $tiiki3 = $_SESSION["tiiki3"]; $keikenn = $_SESSION["keikenn"]; $pic = ""; $koukai = $_SESSION["koukai"]; $nissuu = $_SESSION["nissuu"]; $job = $_SESSION["job"]; $address = $_SESSION["address"]; $freeword = $_SESSION["freeword"]; //---------------------------------------- // □:MYSQLクラスインスタンスの作成 //---------------------------------------- $mysql = new MySQL; ・ ・ ・ ---------------------------------------------------------------

    • ベストアンサー
    • PHP
  • 設定ファイルの読み書き

    PHPで何かを作るときに、DBのパスワードや変数の定義をconfig.phpみたいな設定ファイルを作り、各ソースでrequire_once("config.php")等で読み込んで使うようにしています。設定ファイルの変更はテキストエディタでやっているのですが、これをブラウザで読み込んで表示し、登録はテキストファイルやXMLなどに書き出す方法を探しています。 要は、「各設定をブラウザでやって、実際のスクリプトではその設定を読む」みたいなことをやりたいのですが、どういう方法があるのでしょうか? アドバイス下さい。お願いします。

    • ベストアンサー
    • PHP