PHP OO调用非对象

时间:2011-10-17 10:51:15

标签: php

我最近又开始使用php进行编码,并且正在学习面向对象的PHP。 我遇到了一个问题,我似乎无法理解错误:

  

致命错误:在第57行的C:\ wamp \ www \ sso \ lib \ UserManagement.php中的非对象上调用成员函数verify_Username_And_Password()

据我所知,该程序似乎认为mysql类变量为空,但不是实例时的原因。

函数verify_Username_And_Password($ username,$ password)在Mysql类中定义。

以下是来自UserManagement.php的代码,其中包含了不需要的部分。

<?PHP
require_once 'lib/Mysql.php';

class UserManagement {
    private $mysql;

    function __construct(){
        session_start();
        $this->manage_Session();
        $this->mysql = new Mysql();
    }

    function validate_User ($username, $password){
        $user_Check = $this->mysql->verify_Username_And_Password($username, md5($password));

        if($user_Check) {
            return true;
        } else {
            return false;
        }
    }
}

我必须在PHP中遗漏一些关于OO的基本知识。我会很感激任何人都可以给予的建议。如果需要,我会很乐意发布更多代码。

根据要求,这里是: Mysql.php pastebin。 UserManagement.php pastebin

1 个答案:

答案 0 :(得分:0)

如果没有看到完成工作的代码,我猜你将使用validate_User方法而不首先构建UserMangement对象。

$um = new UserManagement();
$um->validate_User($username, $password);

如果您希望在未先构建UserManagement对象的情况下调用validate_User,则需要static method。如果没有构造UserManagement对象,则永远不会构造Mysql并将其保存在类中的属性中。