自动加载正在改变自动加载文件中包含的变量范围

时间:2018-11-19 19:14:52

标签: php scope include autoload

我的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'

我不知道这是代码还是环境问题。

我尝试搜索,但实际上是问题,我不知道要搜索什么。如果有人对此有一个想法,我会很感激。 :)

0 个答案:

没有答案