What is the scope of require_once in PHP?
require_once()
basically relies on the physical file to determine whether or not it's been included. So it's not so much the context that you're calling require_once()
in, it's whether or not that physical file has previously been required.
In your code above, your foo()
function would not re-parse baz.php
, since it is going to be the same file as was previously included at the top.
However, you will get different results based on whether you included it inside foo()
, or included it at the top, as the scoping will apply when require_once()
does succeed.
It does not. require_once
's tracking applies to inside functions.However, the following scripts produce an error:
a.php
<?phprequire_once('b.php');function f() { require_once('b.php'); echo "inside function f;"; }?>
b.php
<?phpf();?>
because function f() is not pre-defined to b.php
.
To more specifically answer your question, the second time you call require_once
on that file, it won't do anything, because it's already be included.
If your include has functions etc. in it, then you would have issues including it inside a function anyway, so scope is irrelevant. If it's just variables being defined or processed, then you can just use require
instead of require_once
if you want it to be included again, thereby redefining the variables in your scope.