PHP database class - Managing two connections with different privileges
You want two classes. They extends Database. PublicDatabase and PrivateDatabase, you instantiate whichever you need, and inject whichever you need. That way you can even have the same signature in the constructor in both types.

If you don't have a preference, you just need a database connection in a function, just ask for Database, and either will fit.

Also


You don't need to use gettype, you can hint in the function's signature for the type, it works for all Objects and array. So for example:

public function __construct(array $accessLevel, array $credentials) {

Don't give defaults if you can't handle defaults. Your object won't work if $credentials is empty, don't let it be.
What do your Database object solve? What kind of abstraction it provides? Usually such 'utility' classes are pointless.


Better approach

Your User shouldn't be responsible to save/fetch itself. In fact, if you have a User which doesn't care where it came from, you have a perfectly reusable object, a User that can come from a database, a file, a session, a form, whatever, and work the same.

You should have two objects: the User and the UserMapper, the UserMapper is responsible for fetching information about users and fill them into User objects, as well as saving information from the User object back into the database.

The idea of OOP is separation of responsibilities.