こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPの変数の渡し方

現在以下のような位置関係のファイルでa.phpからb.phpに変数を渡したいのですが、うまく行きません。

├dir1
│ └a.php
└dir2
  └b.php

a.php
<?php
public function a(){
$value = "test";
}
?>

b.php
<?php
public funcition b(){
print($value);
}
?>

phpについてwebで調べ、a.phpで$valueをglobalにしてb.phpでは
関数内でinclude('../dir1/a.php')を記述して$GLOBALS['$value']を
使ってみたのですが、うまく値がとれませんでした。

a.phpで変数をテンプレートに設定して
$smarty->Set('Value', $value);
それをb.phpで取得しようとしたのですが
$smarty->getTemplateVars(Value);
取得する事ができませんでした。
同じようにgeTTemplateVarsを使って別のphpでは取得出来たりするのですが、
このsmartyのスコープ?というのもわかりません。

phpScheduleItというスケジュール管理のパッケージを触っていて、
php自体初めてで深い実装が全て追えていません。
勉強不足で申し訳ないのですが、何かヒントとなる事がありましたらご教示頂けますでしょうか。
宜しくお願い致します。

投稿日時 - 2012-05-15 21:49:25

QNo.7477747

困ってます

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

ちょっと意味がわからないのですが、a.phpからb.phpへリンクなどで
ページの遷移があったときにデータを引き継ぎたいということでしょうか?
であればセッションを利用するとよいでしょう。

投稿日時 - 2012-05-15 23:03:21

お礼

セッションでできました。ありがとうございました!

投稿日時 - 2012-05-17 12:15:22

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

a.phpからb.phpに変数を渡したいだけなら、方法はいろいろあると思いますが、意図的に$GLOBALやsmartyを使いたいということでしょうか?

一般的には、クラスの中に変数を隠蔽して、getter関数から値を得ると思います。smartyがやってることはそういうことですよね。ほかにも、変数にconstを宣言して、直接HOGE::hugeみたいにアクセスするとか、極端にいえば、クラスなどつくらなくても、変数を宣言しているファイルをincludeするだけでも、受け渡しは成立すると思いますが。。どのような受け渡しを期待してるのでしょうか?

投稿日時 - 2012-05-16 04:14:28

お礼

質問の意図がわかりにくく申し訳ありません。
既存のsmartyでできたモジュールをカスタマイズしています。
今のところなんとなくでしかsmartyを理解していないというのがあるとは思いますが、
今回質問させて頂いた該当箇所が結構深いところにありまして、余計にわかりにくく。

やりたいことはa.phpでBOOLを設定してb.phpでtrueであれば処理Xをするというような
ことでした。
includeしてもなぜかうまくいかない状況だったので、$GLOBALSを使ってみたりしました。

結局、$_SESSIONで解決しました。
ご回答ありがとうございました!

投稿日時 - 2012-05-17 12:24:41

あなたにオススメの質問