プロが教える店舗&オフィスのセキュリティ対策術

度々お世話になっています。
include先でのinclude元の変数の扱いについて疑問に思ったので質問させて下さい。
include元ファイルtest.php include先ファイルinclude.phpとしてtest.php内の変数をinclude.phpに渡したいと考え以下のコードを書きました。

test.php
<?php
$test = "いけるかな?";
include "include.php";
?>

include.php
<?php
echo $test;
?>

結果、$testの値を表示する事が出来なかったのですが、$testの値を表示するためにはどのような記述方法があるのでしょうか?
また、このような動作を期待している理由としてはPHP部分とHTMLを分離させたいと考えており、ユーザ定義関数に変数を引数として渡して、出力処理をユーザ定義関数内で行うという事も考えたのですが、include先に値を渡す事が出来れば、非常にわかりやすく分離出来ると考えたからです。

他に、PHP部分とHTML部分をファイル分けするやり方などありましたら教えて頂けますとうれしいです。

A 回答 (2件)

>変数$aはインクルードされた b.inc スクリプトの中でも利用可能です。


<?php
$a = 1;
include 'b.inc';
?>

問題なさそうに見えますけど、記述ミスとかありませんか?
先頭に
ini_set('display_errors', 1);
error_reporting(E_ALL);
としたら何か表示されますか?

include は割と自由度が高いので失敗すると余計分かりにくくなりますが
ロジックと出力の分離としては基本的な設計と思います。
この構成に、View(HTML)用の値を格納する箱(オブジェクト等)を作り、
Viewはその箱の値を操作するようにする、とかやっていけば
いわゆるMVCモデリングに近づきます。

参考URL:http://jp2.php.net/include/
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
仰る通り、ファイルを逆に考えてテストしておりました。
お騒がせして申し訳御座いません。
いろいろ調べてみても「可能」という事なのに、自分の環境では再現出来ない(と思い込んでいた)ので何か特別な設定があるのかと勘違いしておりました。

>include は割と自由度が高いので失敗すると余計分かりにくくなりますが
身をもって体験致しました。

>この構成に、View(HTML)用の値を格納する箱(オブジェクト等)を作り、
>Viewはその箱の値を操作するようにする、とかやっていけば
>いわゆるMVCモデリングに近づきます。
オブジェクトや、MVCモデリングといった考え方は私にはまだ理解が遠いですが、今後の参考にさせて頂きます。

この度はご迷惑おかけして本当にごめんなさい。

お礼日時:2009/01/15 23:58

そいつはスコープと呼ばれるものだね


http://www.php.net/manual/ja/language.variables. …

形としては

// test.php
{
 $test = "いけるかな?";
 { //include.php
  echo $test;
 }
}

こうなってると思ったら判りやすいかな?
    • good
    • 0
この回答へのお礼

お騒がせして申し訳御座いません。
テスト時にファイルを逆に捕らえていたようで勘違いしていました。
質問を投稿してからいろいろ試していたのですが、上記のファイル取り違えのままテストしていたため、変数が正常に表示出来ていない状態でした。
無事表示出来る事を確認致しました。

提示して頂いた参考URL、関数を利用する場合の扱いなど今後の参考にさせて頂きます。

この度はご迷惑おかけして本当にごめんなさい。

お礼日時:2009/01/15 23:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!