This is actually the way that PHP was designed to work, and one of the reasons it achieved a large market penetration early on with web programming.
When you submit a form to a PHP script, all the form data is put into superglobal arrays that are accessible at any time. So for instance, submitting the form you put in your question:
<form method="post" action="test.php">
<input type="hidden" name="test1" value="one" />
<input type="hidden" name="test2" value="two" />
<input type="hidden" name="test3" value="three" />
<input type="submit" value="Test Me" />
</form>
would mean that inside test.php, you would have a superglobal named $_POST that would be prefilled as if you had created it with the form data, essentially as follows:
$_POST = array('test1'=>'one', 'test2'=>'two', 'test3'=>'three');
There are superglobals for both POST and GET requests, i.e., $_POST, $_GET. There is one for cookie data, $_COOKIE. There is also $_REQUEST, which contains a combination of all three.
See the documentation page on superglobals for more information.