项目的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依然为全局变量,也可以作为参数传递,但是不可以作为形参。