php

位置:IT落伍者 >> php >> 浏览文章

实测在class的function中include的文件中非php的global全局环境


发布日期:2023年11月05日
 
实测在class的function中include的文件中非php的global全局环境
正如标题所言经测试的结果为在class中include后被include文件变量域已经变成func中了非全局但是可以通过global提升感兴趣的朋友可以参考下哈希望对大家有所帮助

测试代码php

复制代码 代码如下:
<?php
$g = g;
class c{
function fun() {
include(php);
echo "nin class funn";
global $g;
var_dump("$g => " $g
$g => $g
$gg => $gg
);
echo "nn";
}
}
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 gfun() {
global $g $g $gg;
echo "n in gfun n";
var_dump($g => $g $g => $g
$gg => $gg);
echo "n n";
}
gfun();
echo "n in php n";
var_dump($g => $g $g => $g
$gg => $gg
);
echo "n n";
global $g;
echo "n in php globaln";
var_dump($g => $g $g => $g
$gg => $gg
);
echo "n n";


结果

复制代码 代码如下:
in gfun
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的情况就觉得有点郁闷了

上一篇:php二分法查找数组是否包含某一元素

下一篇:php防止sql注入的函数介绍