What are the differences in variable and function scoping, between the “includer” and the “includee”?
For example, these two tests work identically, but are there scoping subtleties I should know about?
Test 1:
File “one.php”:
<?php
$a = 5;
include("two.php");
?>
File “two.php:
<?php
function f($x) { return $x * 2; }
echo f($a);
?>
Test 2:
File “one.php”:
<?php
$a = 5;
?>
File “two.php:
<?php
include("one.php");
function f($x) { return $x * 2; }
echo f($a);
?>
When you execute a PHP file, it starts off in the global scope. The include documentation states;
Since when you include the second file you’re in both cases in global scope, the variable scope will stay global and everything else included will always have global scope. In other words, everything in both files and in both cases ends up in global scope and there is no difference in scoping between the two.