正如标题所言经测试的结果为
在class中include后
被include文件变量域已经变成func中了
非全局
但是可以通过global提升
感兴趣的朋友可以参考下哈
希望对大家有所帮助
测试代码php
复制代码 代码如下:
<?php
$g
=
g
;
class c{
function fun() {
include(
php
);
echo "n
in class fun
n";
global $g
;
var_dump("$g
=> "
$g
$g
=>
$g
$gg
=>
$gg
);
echo "n
n";
}
}
c::fun();
echo "n
in
php
n";
var_dump(
$g
=>
$g
$g
=>
$g
$gg
=>
$gg
);
echo "n
n";
代码php
复制代码 代码如下:
<?php
$g
=
g
;
global $gg
;//本环境下并非全局
需要提升
$gg
=
gg
;
function g
fun() {
global $g
$g
$gg
;
echo "n
in g
fun
n";
var_dump(
$g
=>
$g
$g
=>
$g
$gg
=>
$gg
);
echo "n
n";
}
g
fun();
echo "n
in
php
n";
var_dump(
$g
=>
$g
$g
=>
$g
$gg
=>
$gg
);
echo "n
n";
global $g
;
echo "n
in
php global
n";
var_dump(
$g
=>
$g
$g
=>
$g
$gg
=>
$gg
);
echo "n
n";
结果
复制代码 代码如下:
in g
fun
string(
) "$g
=> "
string(
) "g
"
string(
) "$g
=> "
NULL
string(
) "$gg
=> "
string(
) "gg
"
in
php
string(
) "$g
=> "
NULL
string(
) "$g
=> "
string(
) "g
"
string(
) "$gg
=> "
string(
) "gg
"
in
php global
string(
) "$g
=> "
string(
) "g
"
string(
) "$g
=> "
string(
) "g
"
string(
) "$gg
=> "
string(
) "gg
"
in class fun
string(
) "$g
=> "
string(
) "g
"
string(
) "$g
=> "
string(
) "g
"
string(
) "$gg
=> "
string(
) "gg
"
in
php
string(
) "$g
=> "
string(
) "g
"
string(
) "$g
=> "
NULL
string(
) "$gg
=> "
string(
) "gg
"
由此可见
在class中include后被include文件变量域已经变成func中了非全局
但是可以通过global提升
一般被include文件在编写时可能会由于没有注意到被include的情况就觉得有点郁闷了