项目的php版本从php5.3升级到php5.6之后,爆出标题中的错误,下面是我在php7环境的测试。

测试$_POST是否依然全局变量,结果正常

<?php
class post_class{
    public function __construct(){
        $this->revice();
    }
    public function revice(){
        print_r($_POST);
    }
}
$obj = new post_class();
?>
<form action="" method="post">
<input type="text" name="test" />
<input type="submit" value="submit" />
</form>

测试$_POST是否可以直接作为参数传递,结果报错

<?php
class post_class{
    public function __construct(){
        $this->revice($_POST);
    }
    public function revice($_POST){
        print_r($_POST);
    }
}
$obj = new post_class();
?>
<form action="" method="post">
<input type="text" name="test" />
<input type="submit" value="submit" />
</form>

测试$_POST是否可以作为参数传递,结果正常

<?php
class post_class{
    public function __construct(){
        $this->revice($_POST);
    }
    public function revice($post){
        print_r($post);
    }
}
$obj = new post_class();
?>
<form action="" method="post">
<input type="text" name="test" />
<input type="submit" value="submit" />
</form>

测试$_POST是否可以作为形参,结果错误

<?php
class post_class{
    public function __construct(){
        $this->revice(array(1,2,3,4));
    }
    public function revice($_POST){
        print_r($_POST);
    }
}
$obj = new post_class();
?>
<form action="" method="post">
<input type="text" name="test" />
<input type="submit" value="submit" />
</form>

总结

测试的结果为,$_POST依然为全局变量,也可以作为参数传递,但是不可以作为形参。

最后修改:2017 年 04 月 21 日
如果觉得我的文章对你有用,请随意赞赏