无法调用对象方法.PHP 报告变量未定义


Can't call an object method. PHP reports variable undefined

这是最奇怪的错误! 这可能是一些愚蠢的事情,但我不知道如何解决它。 如果有人能帮忙,我将不胜感激! 我有三个文件,一个叫做items.php,另一个叫做tableFunctions.php,第三个叫做mysql.php。 我使用两个名为"mysql"和"tableFunctions"的全局对象。 它们存储在文件'mysql.php'中,并且分别是"表函数.php"。 在每个文件中,我创建其对象的一个实例,并将其分配给全局变量 $_mysql 或 $_table。 喜欢这个:

在文件 mysql.php:

global $_mysql;
$_mysql = new mysql();

在文件表中函数.php:

global $_table;
$_table = new tableFunctions();

以下是它应该如何工作:

项目.php文件包括表函数.php文件...反过来,它需要 mysql.php 文件,所以它也包含它。

在 items.php 文件中,我调用方法getTable(),它包含在对象 tableFunctions 中。(以及变量 $_table。喜欢这个:

$t = $_table->getTable('items');

getTable 函数调用方法,arrayFromResult(),它包含在对象 mysql 中。(在变量 $_mysql 中。喜欢这个:

$result  = $_mysql->arrayFromResult($r);

这就是我得到错误的地方。 PHP 说变量 '$_mysql' 是未定义的,但我在 'mysql.php' 文件中定义了它。(见上文) 我还包含 mysql.php 和以下代码:

include_once 'mysql.php';

我不知道出了什么问题! 如果有人能帮忙,将不胜感激。可以通过以下链接下载源文件:https://www.dropbox.com/sh/bjj2gyjsybym89r/YLxqyNvQdn

这是一个常见的错误,在定义的位置,你只需要以下行:

$_mysql = new mysql();

当你想在函数中使用它时,只有在那里你必须将其声明为全局变量(否则它被视为像任何其他函数变量一样):

global $_mysql;

因此,例如,如果我们采用您的方法:

function getTable($tableName) {         
        $r = mysql_query("SELECT * FROM $tableName");
            err($r, 'mysql returned null when getting table!');
        $result  = $_mysql->arrayFromResult($r);
        return $result;
    }

应改为:

function getTable($tableName) {
        global $_mysql;
        $r = mysql_query("SELECT * FROM $tableName");
            err($r, 'mysql returned null when getting table!');
        $result  = $_mysql->arrayFromResult($r);
        return $result;
    }