在班级中使用班级?

时间:2010-03-29 15:09:22

标签: php mysql class

我自己构建了一个MySQL类,我在所有项目中使用它。我即将开始一个严重基于用户帐户的项目,我计划为此建立自己的类。问题是,用户类中的很多方法都是来自MySQL类的MySQL查询和方法。

例如,我的用户类中有一个方法来更新某人的密码:

class user() {
    function updatePassword($usrName, $newPass)
    {
        $con = mysql_connect('db_host', 'db_user', 'db_pass');
        $sql = "UPDATE users SET password = '$newPass' WHERE username = '$userName'";
        $res = mysql_query($sql, $con);
        if($res) return true;
        mysql_close($con);
    }
}

(我有点匆匆忙忙找出任何语法错误:))

正如您所看到的,将使用MySQL来更新用户密码,但不使用我的MySQL类,这是正确的吗?我认为没有办法在我的用户类中使用我的MySQL类而不会看起来很脏。我只是像$DB = new DB();一样使用它吗?这意味着我的mysql.class.php也包括在某个地方......

我对此很困惑,所以任何帮助都会受到赞赏,谢谢。

3 个答案:

答案 0 :(得分:2)

您应该探索dependency injectionPHP example

答案 1 :(得分:1)

是的,您必须包含mysql.class.php才能使用该课程。但这与Java,Python等类似。您必须指定使用的内容。

在您的用户类中使类可用的一种方法是使用DB类的实例调用构造函数:

class User {
    private $_db;
    public function __construct($db) {
        $this->_db = $db;
    }

    public function updatePassword($usrName, $newPass) {
        // use $this->_db here
    }

}

然后:

require 'mysql.class.php'

$user = new User(new DB());
$user->updatePAssword('foo', 'bar');

答案 2 :(得分:0)

研究extending a class。或者换句话说,inheritance