ホームページ  >  記事  >  バックエンド開発  >  Xiaobai さん、アドバイスをお願いします。別の関数のグローバル変数を呼び出すカスタム関数を作成するにはどうすればよいですか?

Xiaobai さん、アドバイスをお願いします。別の関数のグローバル変数を呼び出すカスタム関数を作成するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 13:34:16914ブラウズ

member.inc.php:

function marrbase(){if(isset($_COOKIE["uname"]) && isset($_COOKIE["uid"])){global $mbase;$mbase_data = mysql_query("select * from dh_member where `id`=" . $_COOKIE["uid"] . " and `mck`=1");if (!$mbase_data){die(mysql_error());exit();}$mbase = mysql_fetch_array($mbase_data);}else{exit();}}


私は次のように書きました:
require_once("member.inc.php");function supp(){marrbase();echo $mbase["email"]; exit();}


出力は空です Xiaobai、これを正しく書く方法についてアドバイスをお願いします...


への返信議論 (解決策)

関数 supp() {

グローバル $mbase;
marrbase();


関数 supp(); ;

marrbase();

echo $mbase["email"];

}



ありがとう、私はそれを supp() で呼び出しています。他のページに出力する場合は、直接 echo $mbase["email"]; と値を出力できます

どうなっているのでしょうか?

関数内にグローバル $mbase があるため、
つまり、$mbase はグローバル変数です
marrbase 関数を実行している限り、$mbase は関数の外からアクセスできます

しかし、この書き方は適切ではありませんソフトウェアエンジニアリングによる低結合の要件

関数内にグローバル $mbase があるため
したがって、$mbase はグローバル変数です
marrbase 関数を実行している限り、関数の外から $mbase にアクセスできます

ただしこの書き方はソフトウェア工学における「低結合」の要件に沿ったものではありません

では、形式的にはどのように書くか


パラメータとして渡す


パラメータとして渡す?

デザインの仕方

function marrbase(){  ....  return $mbase;}function supp() {  $mbase = marrbase();  echo $mbase["email"];}

or

function marrbase(&$mbase){  ....  $mbase = ....;}function supp() {  marrbase($mbase);  echo $mbase["email"];}


function marrbase(){  ....  return $mbase;}function supp() {  $mbase = marrbase();  echo $mbase["email"];}

or
function marrbase(&$mbase){  ....  $mbase = ....;}function supp() {  marrbase($mbase);  echo $mbase["email"];}


ありがとう〜〜勉強になりました ありがとう

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。