Heim  >  Artikel  >  Backend-Entwicklung  >  小白求指点:自定义函数内调用另外一个函数里的全局变量,该怎么写啊

小白求指点:自定义函数内调用另外一个函数里的全局变量,该怎么写啊

WBOY
WBOYOriginal
2016-06-23 13:34:16936Durchsuche

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();}


输出为空,小白求大神指点一下这个该怎么写才规范正确啊..


回复讨论(解决方案)

function supp() {
   global $mbase;
  marrbase();
  echo $mbase["email"]; exit();
}

function supp() {
   global $mbase;
  marrbase();
  echo $mbase["email"]; exit();
}





谢谢啊,我还是有个小疑问:

我现在是在supp()里面调用的,但是我在其他页面输出的时候 直接echo $mbase["email"]; exit(); 又能输出值
这是怎么回事啊?

因为你在函数里有 global $mbase;
所以 $mbase 就是全局变量了
只要你执行过 marrbase 函数
$mbase 就可在函数外访问了

但这样的写法并不符合软件工程学中 低耦合 的要求

因为你在函数里有 global $mbase;
所以 $mbase 就是全局变量了
只要你执行过 marrbase 函数
$mbase 就可在函数外访问了

但这样的写法并不符合软件工程学中 低耦合 的要求



 那该怎么写 才正规啊

作为参数传递

作为参数传递?

怎么设计啊

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


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

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


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



非常感谢~~受教了 谢谢
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn