测试代码1.php <div class="codetitle"><a style="CURSOR: pointer" data="47369" class="copybut" id="copybut47369" onclick="doCopy('code47369')"> 代码如下:<div class="codebody" id="code47369"> <?php $g1 = 'g1'; class c{ function fun() { include('2.php'); echo "n-----in class fun---n"; global $g1; var_dump("$g1 => ",$g1 ,'$g2 => ',$g2 ,'$gg2 => ',$gg2 ); echo "n--------n"; } } c::fun(); echo "n--- in 1.php ----n"; var_dump('$g1 => ',$gg2); echo "n--- ----n"; 代码2.php <div class="codetitle"><a style="CURSOR: pointer" data="39083" class="copybut" id="copybut39083" onclick="doCopy('code39083')"> 代码如下:<div class="codebody" id="code39083"> <?php $g2 = 'g2'; global $gg2;//本环境下并非全局,需要提升 $gg2 = 'gg2'; function g2fun() { global $g1,$g2,$gg2; echo "n--- in g2fun ----n"; var_dump('$g1 => ',$g1,$gg2); echo "n--- ----n"; } g2fun(); echo "n--- in 2.php ----n"; var_dump('$g1 => ',$gg2 ); echo "n--- ----n"; global $g1; echo "n--- in 2.php global----n"; var_dump('$g1 => ',$gg2 ); echo "n--- ----n"; 结果 <div class="codetitle"><a style="CURSOR: pointer" data="17056" class="copybut" id="copybut17056" onclick="doCopy('code17056')"> 代码如下:<div class="codebody" id="code17056"> --- in g2fun ---- string(7) "$g1 => " string(2) "g1" string(7) "$g2 => " NULL string(8) "$gg2 => " string(3) "gg2" --- ---- --- in 2.php ---- string(7) "$g1 => " NULL string(7) "$g2 => " string(2) "g2" string(8) "$gg2 => " string(3) "gg2" --- ---- --- in 2.php global---- string(7) "$g1 => " string(2) "g1" string(7) "$g2 => " string(2) "g2" string(8) "$gg2 => " string(3) "gg2" --- ---- -----in class fun--- string(7) "$g1 => " string(2) "g1" string(7) "$g2 => " string(2) "g2" string(8) "$gg2 => " string(3) "gg2" -------- --- in 1.php ---- string(7) "$g1 => " string(2) "g1" string(7) "$g2 => " NULL string(8) "$gg2 => " string(3) "gg2" --- ---- 由此可见, 在class中include后,被include文件变量域已经变成func中了,非全局. 但是可以通过global提升. 一般被include文件在编写时,可能会由于没有注意到被include的情况,就觉得有点郁闷了. (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|