在我的用户类中使用数据库类

Jos*_*osh 7 php database class object

在我的项目中,我有一个数据库类,用于处理所有MySQL的东西.它连接到数据库,运行查询,捕获错误并关闭连接.

现在我需要在我的网站上创建一个成员区域,我打算构建一个用户类来处理注册,登录,密码/用户名更改/重置和注销.在这个用户类中,我需要使用MySQL,原因很明显......这就是我的数据库类.

但是我对如何在用户类中使用我的数据库类感到困惑.我是否想为我的用户类创建一个新的数据库对象,然后只要该类中的方法完成就关闭它?或者我以某种方式创建一个可以在整个脚本中使用的"全局"数据库类(如果是这种情况我需要帮助,不知道该怎么做.)

感谢您提供给我的任何反馈.

Ark*_*rkh 22

简单,3步骤的过程.1 /创建数据库对象.2 /将它提供给用户类构造函数.3 /在用户方法中使用它.

小例子.

文件Database.class.php:

<?php
class Database{
  public function __construct(){
    // Connects to database for example.
  }

  public function query($sqlQuery){
    // Send a query to the database
  }
  [...]
}
Run Code Online (Sandbox Code Playgroud)

在User.class.php中:

<?php

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

  public function deleteUser(){
    $this->_db->query('DELETE FROM Users WHERE name = "Bobby"');
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,在userManager.php中,例如:

<?php
$db = new Database();
$user = new User($db);
// Say bye to Bobby :
$user->deleteUser();
Run Code Online (Sandbox Code Playgroud)

如果你想要这个旧技术的当前流行名称,请谷歌"依赖注入".php中的Singleton模式很快就会消失.

  • 那么...注册? (4认同)

Whi*_*ind 0

既然您将数据库用作对象,为什么不直接向对象添加方法,让您的“用户类”可以用来处理它需要做的事情。用户类可以包含指向数据库类的指针。数据库类将保护您的数据库,并确保用户类正确使用它。