Эти два метода получения ссылки на существующий экземпляр на самом деле не являются взаимоисключающими. Первый предполагает, что метод doSomething () содержится в классе, который также содержит поле $ database, которое было установлено на экземпляр Database (возможно, через конструктор класса). Эта первоначальная установка базы данных $ this-> вполне могла быть с помощью метода getInstance () синглтона.
Полагаю, тогда вы могли бы сравнить эти два вопроса о том, будете ли вы сохранять ссылку на экземпляр как поле класса или всегда запрашивать новую ссылку непосредственно из Singleton. Я не могу вспомнить время, когда это не сводится к просто предпочтениям, хотя определенно выберу один и придерживайся его. (лично я бы выбрал второе для разделения интересов)
Самое главное, согласованность шаблонов, которые вы используете в своем коде, будет иметь большое значение для снижения затрат на обслуживание.