【问题标题】:PHP Function Scope FailurePHP 函数作用域失败
【发布时间】:2013-03-28 12:03:09
【问题描述】:

我很难理解范围以及阻止我的新代码工作的原因(假设这是范围问题)。

以下函数位于引用类的文件PATH.'/includes/custom-functions.php' 中:

    function infusion() {
      require_once(PATH.'/classes/infusion.php'); //PATH is defined in WordPress from ~/wp-content/themes/theme/
      return new infusion();
    }

该类依赖于PATH.'/api/isdk.php' 和来自/api/ 目录中另一个文件的连接凭据。在PATH .'/includes/custom-functions.php' 中,我还有许多其他函数可以调用$infusion = infusion(); 并且可以完美运行。

问题
我创建了一个新文件:PATH.'/includes/report.php',我需要访问它$infusion = infusion();,但无法通过重复上面的function infusion() 定义来开始工作;使用require_once();;或使用include();。所有这 3 个选项只会杀死其余的代码,我只能得出结论 - 好吧,我没有结论。

任何帮助将不胜感激。

【问题讨论】:

    标签: php api class function scope


    【解决方案1】:

    我假设代码没有使用命名空间,因此不允许您重新声明 infusion 函数(通过重新定义函数或重新包含类)。

    您的includes/report.php 文件应该有:

    require_once PATH.'/includes/custom-functions.php';
    
    // your other code here ...
    
    $infusion = infusion();
    

    您的文件中包含的其他文件/类可能已经需要custom-functions.php,因此您可以完全跳过它。另请注意,PATH 常量在您尝试使用它之前应该已经在某处定义(直接或通过included 文件)。如果您将error_reporting 设置为包含E_ALL,如果该常量不存在,您将在错误日志中收到通知。

    如果失败,您的错误日志可能会提供一些关于您的问题的额外背景。

    【讨论】:

    • 我将不得不再四处寻找......仔细检查是否没有任何有问题的文件已经需要custom-functions.phpPATH 常量在引用之前已声明,但是当我添加require_once(); 时,它会中断输出,所以我尝试添加错误报告。
    • 我又遇到了同样的问题,这让我完全糊涂了!我有一个像这样打开的文件 handler.php:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2011-10-30
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多