无法调用对象方法。 PHP报告变量undefined

时间:2012-06-21 02:19:27

标签: php

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

在文件mysql.php中:

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

在文件tableFunctions.php中:

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

以下是它应该如何工作:

items.php文件包含tableFunctions.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

1 个答案:

答案 0 :(得分:0)

这是一个常见的错误,在定义的地方你只需要一行:

$_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;
    }