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

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

WBOY
リリース: 2016-06-23 13:34:16
オリジナル
950 人が閲覧しました

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"];}
ログイン後にコピー
ログイン後にコピー


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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート