Когда использовать статику а когда нет? Это классический вопрос.
Минусы статики:
- Нет конструктора
В конструторе обычно инициализируются все зависимости класса, без которых он не будет работать. После того, как создал экзепляр класса - конструктор выполнился. А у статичного класса нет гарантии, что класс был инициализирован. Можно конечно обойти это убогими костылями и хаками типа - StaticClass::init(), но это не правильный дизайн, по любому.
- Не сможешь писать юнит тесты аккуратно
Сейчас пока ты не знаком с этим и с теорией TDD, но в будущем ты поймешь, что глобальные статичные классы - это зло, когда попытаешься протестировать метод, внутри которого статичные классы.
Теперь по существу:
Работа с базой - создание, редактирование пользователя, а также проверка на валидность авторизации лучше всего будеть поместить в один DataMapper класс. И вообще погугли что такое Data Mapper.
class UserMapper
{
private $pdo;
public function __construct($pdo)
{
$this->pdo = $pdo;
}
public function authValid($login, $password)
{
// Выполнил запрос к базе через $pdo и вернул true или false
}
}
Затем в классе Auth, в методе attemp()
просто вызываешь UserMapper передавая данные,
а не пишешь логику там.