在PHP中调用另一个类中的类

Vin*_*nny 4 php oop

希望你能帮我解决这个问题:我有两个类:数据库和用户.数据库使用PDO(在构造函数内)连接到数据库,并具有更改表,插入数据等的功能.Users类将处理登录,以及添加/删除用户.但是,Users类需要连接到数据库.我怎样才能做到这一点?

Mat*_*hew 12

你可以做几件事:

全局

$db = new Database();

class Users
{
  public function foo()
  {
    global $db;
    $db->query();
  }
}
Run Code Online (Sandbox Code Playgroud)

设置静态变量

$db = new Database();

class Model
{
  static public $db;
}

Model::$db = $db;

class Users extends Model
{
  public function foo()
  {
    self::$db->query();
  }
}
Run Code Online (Sandbox Code Playgroud)

使用单身人士

class Database
{
   private static $instance;

   private function __construct()
   {
   }

   public static function instance()
   {
      return self::$instance ? self::$instance : self::$instance = new self();
   }
}

class Users
{
   public function foo()
   {
      Database::instance()->query();
      // or $db = Database::instance(); $db->query();
   }
}
Run Code Online (Sandbox Code Playgroud)

您要避免的一件事是为每个模型或类创建一个新的数据库连接.

  • 或者,依赖注入,即将实例化或通过setDatabase()方法将数据库资源传递给需要它的对象.所有这些都有各自的优点和缺点. (2认同)