【问题标题】:PHP: Can't access object from included file [duplicate]PHP:无法从包含的文件中访问对象[重复]
【发布时间】:2011-05-09 17:50:58
【问题描述】:

使用这个函数我想创建一个 PHP 导航:

function loadPage($pagename) {
        if (!isset($pagename) || !file_exists($pagename . '.php')) {
            include FRONTPAGE . '.php';
        } else {
            include $pagename . '.php';
        }
    }

在我的索引中,我有以下内容:

require 'includes/classes/core.php';
$core = new SH_Core();

我可以从 $core 访问所有其他类,例如 $core->database->newConnection(); 而且我应该也可以在包含的文件中使用它。但我不能:

Notice: Undefined variable: core in C:\Users\Development\Development applications\localhost\htdocs\Shuze\frontpage.php on line 4

Notice: Trying to get property of non-object in C:\Users\Development\Development applications\localhost\htdocs\Shuze\frontpage.php on line 4

Fatal error: Call to a member function newConnection() on a non-object in C:\Users\Development\Development applications\localhost\htdocs\Shuze\frontpage.php on line 4

【问题讨论】:

    标签: scope php


    【解决方案1】:

    你需要让你的函数访问 $core:

    function loadPage( $pageName ) {
        global $core;
        //rest of code
    }
    

    您也可以将其放在包含文件的顶部。或者,您可以使用超全局 $GLOBALS['core']。

    【讨论】:

    • 谢谢!这确实有效!愚蠢的我错过了......不能停止学习,哈哈。
    • 感谢分享,这是一条很重要的规则。
    • -1:最坏的解决方案
    • @tereško,你为什么要因为回答这些家伙的问题而降级我?如果他想使用全局变量,那就是你这样做的方式。是的,依赖注入等会更好,但他并没有问关于架构的问题。因此,如果您要对我进行 -1,请详细说明我是如何未能回答问题的,或者就如何访问全局变量提供您的“更好”解决方案。
    猜你喜欢
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2012-07-30
    相关资源
    最近更新 更多