In the page I'm working on, the first thing I do is include my tools.php
file. Say, index.php
require("../scripts/tools.php");
Next, I create a custom css
$custom_css = [
$link([
"rel" => "stylesheet",
"type" => "text/css",
"media" => "screen",
"href" => BASE . "css/layout-list.css",
]),
];
and include the head element using a custom require function which is declared inside the tools.php
.
req("template/head.php");
The reason I'm using a custom require
is because I need to increase the ../
s on each path everytime I go deeper in the folder structure. I don't want to add them manually.
There is a base()
function in the tools.php
and it automatically calculates the ../
s necessary to reach back to the main folder, and assigns it to a BASE
constant. This BASE
constant is used in the req()
function
function req($path) {
require(BASE . $path);
}
This (kind of) works. The problem is, since (the actual) require was called inside a function, head.php
can't access $custom_css
, and index.php
can't access any variable inside head.php
.
The solution I've came up with is to declare that the variable is global before using it.
So, if I have to access $custom_css
that's in index.php
from head.php
, in head.php
I do:
global $custom_css;
if (!isset($custom_css)) {
$custom_css = [];
}
and if I have to access a variable that's in head.php
from index.php
, I must declare the variable globally inside the head.php
:
global $head_var;
$head_var = 4;
This process seems very tiring and redundant. Isn't there a way to change where the require
effects? Make all the variables in the included file global even though the file was included in a function?