design patterns – Building an MVC framework: should I get an instance of the database or should I extend with a "general" template class that already has a database instance

I'm trying to get a database instance via any model using the database.

This is ideal in my opinion:

UserAuthenticator class
{
private $ db;
private client;

__construct public service ($ db database, customer $ customer)
{
$ this-> db = $ db;
$ this-> customer = $ customer;
}
}

Use of a dependency injection.

But my team refuses to use addiction injections.

Which of the two options should be better and why?

Option 1: Get the instance of the database directly only in the models that need it.

UserAuthenticator class
{
private $ db;
private client;

public service __construct ()
{
$ this-> db = Database :: getInstance ();
$ this-> customer = Customer :: getInstance ();
}
}

Option 2: Have a "general" base class, which will extend all models, forcing them to use the database (which is not mandatory in models, is not it?)

namespace MyApp  Models  Base;
use MyApp  Core  Database as a database;
class Database {

protected $ db;

public service __construct () {
$ this-> db = db :: getInstance ();
}
}


use MyApp  Models  Base  Database as a base;
UserAuthenticator class extends the base
{
private client;

public service __construct ()
{
parent :: __ construct ();
$ this-> customer = Customer :: getInstance ();
}
}