Автозагрузка меняет область действия переменных, включенных в файл автозагрузки - PullRequest
0 голосов
/ 19 ноября 2018

У меня проблемы с моим проектом php ...

Функция автозагрузки:
spl_autoload_register(function ($class_name) {
include 'HTMLClasses/'.$class_name . '.php';});

При автоматической загрузке классов из каталога "HTMLClasses" переменные в автоматически загружаемом файле, включенные в другие файлы, больше не находятся в его области действия.

somefile.php

require_once $_SERVER["DOCUMENT_ROOT"] . "/config/phpFileIndex.php";
require_once $phpFile['resourcesPaths'];
include_once "../autoload.php";
class SomeClass{}

проблема в том, что при автозагрузке этого класса переменная $ phpFile больше не входит в область действия этого сценария. Он глобальный, и я могу получить к нему доступ, используя $ GLOBALS, но я не понимаю, зачем мне это вообще нужно, поскольку, если я включу SomeClass вручную, переменная находится в обычной области видимости. В документации spl_autoload_register нет ничего задокументированного об этом поведении.

Другая проблема заключается в том, что я не могу включить автозагрузку отсюда. Даже если autoload.php находится в верхнем каталоге. При включении полного пути от Document_root это работает, но не относительно. И я на самом деле не понимаю этого. Предупреждение гласит:

'Warning: include_once(): Failed opening '../autoload.php' for inclusion (include_path='\xampp\php\PEAR') in F:\<path>\HTMLClasses\Template.php on line 4'

Я не знаю, если это проблема с кодом или с моим окружением.

Я пытался найти его, но проблема в том, что я не знаю, что искать. Если у кого-то есть идея по этому поводу, я бы очень ее оценил. :)

...