• ベストアンサー

インクルードされたファイルに書かれている変数を表示させたい

testA.php、testB.phpという2つのファイルがあり、 中身はそれぞれ testA.php・・・ <?php  $hensu = "これはテストです";  include ('testB.php');  printtest(); ?> testB.php・・・ <?php  function printtest() {   print "表示テスト";   print $hensu;  } ?> という感じになっています。 これだとtestB.phpはインクルードされるのですが、$hensuが空になって表示されます。 $インクルードした時に$hensuを表示させるにはどうしたら良いのでしょうか? アドバイスをお願いします。

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.4

オブジェクト指向を推進するPHP的にはグローバル変数がイレギュラーですから致し方ないと思います。 >表示カラー設定等が10個以上あり 本当ならclassを作ってウンヌンと言う話に行きたいところですが、配列に格納するのが楽かと思います。 %color = (  'frame' => "black",  'background' => "white",  'text' => "black", : ); とすれば、関数に渡す変数は1つで済みますね。

kamay
質問者

お礼

なるほど、配列に格納しちゃうんですね。 確かにそれならつらつらと書くよりすっきりしそうです。 ありがとうございました、試してみますね。

その他の回答 (3)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.3

そうですね。PHPではそういうポリシーは無いようです。 先のURLに書かれているとおり、明示的に global宣言をするか、$GLOBALS["hensu"]として参照するかです。 若しくは関数に引数を与える方法ですが、これが最もPHPのポリシーに合致したやり方だと思いますよ。

kamay
質問者

お礼

ありがとうございます。 そうなんですか・・・PHPって中々難しいですね(>_<;) 一度参考URLとソースを見直して見やすい書き方を研究してみようと思います。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.2

そういう場合は、引数を利用してはいかがですか? function printtest($hoge){ print "test"; print $hoge; } printtest($hensu);

kamay
質問者

お礼

ありがとうございます。 現在PHPで掲示板を作っていて、初め一つのファイルで全て済ませようと考えていました。 でも書いていくうちにごちゃごちゃしてきたので、処理を別ファイルにできないかな、と考えたのです。 カラー設定等をweb表示用ファイル(上の例ではtestA.php)に書き、処理ファイル(testB.php)をインクルードするという方法にしようとしたのですが、素人の浅知恵だったせいかとても苦戦している次第です。 引数にしてもいいのですが、表示カラー設定等が10個以上あり、それをfunctionごとに書いて行くのもどうなのかな?と思ったのです。 何かすっきりと記述できる良い方法はないでしょうか? お手を煩わせて申し訳ありませんが、よろしくお願いします。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

functionの中はローカル変数になるので$hensuは参照できません。functionの中で global $hensu; と宣言してください。

参考URL:
http://www.php.net/manual/ja/language.variables.scope.php
kamay
質問者

お礼

ありがとうございます。 この場合、もしtestB.phpにfunctionが複数あったとしたら、functionごとに global $hensu;としなければなりませんか? testA.php側でこれはグローバル変数ですよ、と定義する事はPHPではできないのでしょうか・・・

関連するQ&A

専門家に質問してみよう