> 백엔드 개발 > PHP 튜토리얼 > 小白求指点:自定义函数内调用另外一个函数里的全局变量,该怎么写啊

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

WBOY
풀어 주다: 2016-06-23 13:34:16
원래의
945명이 탐색했습니다.

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"];}
로그인 후 복사
로그인 후 복사



非常感谢~~受教了 谢谢
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿