-1

数据库连接

$db_user = 'root';
$db_pass='';
$db = new PDO('mysql:host=localhost;dbname=resource_management', $db_user, $db_pass);

这里是它创建的 User 类

class User{     
    protected $username;
    protected $pass;
    public function __construct($username, $password){
        $this->username = $username;
        $this->password = $password;
    }   
    public function test(){     
        $sql = "select * from user";
        $data = $db->query($sql);
        while ($row = $data->fetch(PDO::FETCH_OBJ)){
            var_dump($row);
            echo $row->username;
        }
    }   
}

在这里我尝试测试 User 类

$user = new User('admin', 'test');
$user->test();
4

1 回答 1

3

您通常会在构造函数中传递它或使用自动加载参数的工厂模式:

class Factory{
  public static function setdb($db) {
    self::$db = $db;
    }

  public static function getUser($role, $action) {
    return new User(self::$db, $role, $action);
    }

  public static function getUserPermissions($role, $action) {
    return new UserPermissions(self::$db, $role, $action);
    }
  }

类似的东西。注意:我不是模式专家,现在我正在学习它,所以上面的代码可能包含错误/不完美。然后你可以像这样访问它:

$DB = new PDO(...);
factory::setdb($DB)

$User = Factory::getUser('admin', 'test');

我认为代码是不言自明的。然后您可以添加其他方法来创建更多对象并自动将所需的变量传递给它们,这样您就不需要手动编写它们。它被称为工厂模式。您可以根据需要添加更多方法。

注意2:虽然可能会想到全局变量,但这是一个糟糕的主意

于 2013-10-21T13:04:49.197 回答