我自己构建了一个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
也包括在某个地方......
我对此很困惑,所以任何帮助都会受到赞赏,谢谢。
答案 0 :(得分:2)
答案 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。